Публичный аккаунт WeChat: compassblog
Добро пожаловать, чтобы следовать, двигаться вперед, учиться друг у друга и добиваться прогресса вместе!
Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение в фоновом режиме!
1, Обзор фреймворка Hibernate
(1), что такое спящий режим
Hibernate — это среда ORM с открытым исходным кодом и одна из основных сред уровня персистентности Java.Он инкапсулирует JDBC с помощью облегченных объектов, позволяя разработчикам Java использовать идеи объектно-ориентированного программирования для работы с базами данных.
(2) Положение Hibernate в трехуровневой архитектуре
Платформа Struts2, упомянутая в предыдущей статье, заменяет веб-уровень в трехуровневой структуре, а среда Hibernate заменяет уровень dao.Конкретное описание выглядит следующим образом:
(3), что такое ОРМ
ORM (объектно-реляционное сопоставление), то есть объектно-реляционное сопоставление, заключается в использовании метаданных, описывающих сопоставление между объектами и таблицами базы данных, для автоматического сохранения объектов в Java-приложениях в таблицах в реляционных базах данных. Манипулируя объектами Java, можно выполнять операции с таблицами базы данных. ORM можно понимать как связь между реляционными данными и объектами, и разработчикам нужно сосредоточиться только на объектах, отображаемых на одном конце связи. Принцип реализации ORM следующий:
(4) Преимущества и функции фреймворка Hibernate
- Hlbernate выполняет облегченную инкапсуляцию кода базы данных доступа JDBC, что значительно упрощает утомительный и повторяющийся код уровня доступа к данным, снижает потребление памяти и повышает эффективность работы.
- Hlbernate — это основная структура персистентности, основанная на JDBC и превосходной реализации ORM, которая значительно упрощает работу по кодированию уровня DAO (объект доступа к данным, объект доступа к данным). При работе с базой данных это можно сделать объектно-ориентированным способом, и больше не нужно писать операторы SQL.
- Производительность Hlbernate очень высока, а гибкость сопоставления великолепна. Он поддерживает множество реляционных баз данных, начиная от сложных отношений один-к-одному и заканчивая многими-ко-многим.
- Сильная расширяемость, благодаря открытому исходному коду и открытости API, когда собственной функции недостаточно, ее можно расширить за счет самостоятельного кодирования.
(1), что такое спящий режим
Hibernate — это среда ORM с открытым исходным кодом и одна из основных сред уровня персистентности Java.Он инкапсулирует JDBC с помощью облегченных объектов, позволяя разработчикам Java использовать идеи объектно-ориентированного программирования для работы с базами данных.
(2) Положение Hibernate в трехуровневой архитектуреПлатформа Struts2, упомянутая в предыдущей статье, заменяет веб-уровень в трехуровневой структуре, а среда Hibernate заменяет уровень dao.Конкретное описание выглядит следующим образом:
(3), что такое ОРМ
ORM (объектно-реляционное сопоставление), то есть объектно-реляционное сопоставление, заключается в использовании метаданных, описывающих сопоставление между объектами и таблицами базы данных, для автоматического сохранения объектов в Java-приложениях в таблицах в реляционных базах данных. Манипулируя объектами Java, можно выполнять операции с таблицами базы данных. ORM можно понимать как связь между реляционными данными и объектами, и разработчикам нужно сосредоточиться только на объектах, отображаемых на одном конце связи. Принцип реализации ORM следующий:
(4) Преимущества и функции фреймворка Hibernate
- Hlbernate выполняет облегченную инкапсуляцию кода базы данных доступа JDBC, что значительно упрощает утомительный и повторяющийся код уровня доступа к данным, снижает потребление памяти и повышает эффективность работы.
- Hlbernate — это основная структура персистентности, основанная на JDBC и превосходной реализации ORM, которая значительно упрощает работу по кодированию уровня DAO (объект доступа к данным, объект доступа к данным). При работе с базой данных это можно сделать объектно-ориентированным способом, и больше не нужно писать операторы SQL.
- Производительность Hlbernate очень высока, а гибкость сопоставления великолепна. Он поддерживает множество реляционных баз данных, начиная от сложных отношений один-к-одному и заканчивая многими-ко-многим.
- Сильная расширяемость, благодаря открытому исходному коду и открытости API, когда собственной функции недостаточно, ее можно расширить за счет самостоятельного кодирования.
2. Создайте инфраструктуру Hibernate и завершите первый пример приложения.
(1) Создайте веб-проект и импортируйте необходимый пакет jar, включая пакет драйвера базы данных, как показано на следующем рисунке:
(2) Создайте базу данных demo_project и пользователя таблицы, и оператор создания таблицы выглядит следующим образом:
Создайте оператор demo_project базы данных:
create database demo_project;
Общие операторы таблицы:
CREATE TABLE `user` (
`id` int(10) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`age` int(3) DEFAULT NULL,
`height` int(11) DEFAULT NULL,
`weight` double(10,0) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(3), создайте объект User.java, конкретный код выглядит следующим образом:
User.java
package com.hibernate.demo;
public class User {
//基本属性
private int id;
private String name;
private int age;
private int height;
private int weight;
//setter和getter方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
(4) Импортируйте ограничения, создайте новый файл конфигурации ORM User.hbm.xml в том же пакете, что и сущность, и напишите метаданные ORM. Конкретный код конфигурации выглядит следующим образом:
User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表与实体对象的关系 -->
<hibernate-mapping package="com.hibernate.domain" >
<class name="User" table="user" >
<id name="id" >
<generator class="native"></generator>
</id>
<property name="name" column="name" ></property>
<property name="age" column="age" ></property>
<property name="height" column="height" ></property>
<property name="weight" column="weight" ></property>
</class>
</hibernate-mapping>
(5) Создайте новый основной файл конфигурации hibernate.cfg.xml в разделе src. Конкретный код конфигурации выглядит следующим образом:
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库url -->
<property name="hibernate.connection.url">jdbc:mysql:///demo_project</property>
<!-- 数据库连接用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库连接密码 -->
<property name="hibernate.connection.password">root</property>
<!-- 数据库方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 引入orm元数据 -->
<mapping resource="com/hibernate/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
(6) Создайте новый тестовый класс TestDemo.java и напишите тестовый код следующим образом:
TestDemo.java
package com.hibernate.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.hibernate.domain.User;
//测试Hibernate框架
public class TestDemo {
@Test
//插入信息
public void test(){
Configuration conf = new Configuration().configure();
SessionFactory sessionFactory = conf.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//保存信息
User u = new User();
u.setName("孔乙己");
u.setAge(22);
u.setHeight(172);
u.setWeight(120);
session.save(u);
tx.commit();
session.close();
sessionFactory.close();
}
}
(7), рабочий результат, информация успешно вставлена, конкретный результат выглядит следующим образом:
Рабочая среда этого проекта: jdk1.7, Tomcat7.0
(1) Создайте веб-проект и импортируйте необходимый пакет jar, включая пакет драйвера базы данных, как показано на следующем рисунке:
(2) Создайте базу данных demo_project и пользователя таблицы, и оператор создания таблицы выглядит следующим образом:
Создайте оператор demo_project базы данных:
create database demo_project;
Общие операторы таблицы:
CREATE TABLE `user` (
`id` int(10) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`age` int(3) DEFAULT NULL,
`height` int(11) DEFAULT NULL,
`weight` double(10,0) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(3), создайте объект User.java, конкретный код выглядит следующим образом:
User.java
package com.hibernate.demo;
public class User {
//基本属性
private int id;
private String name;
private int age;
private int height;
private int weight;
//setter和getter方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
(4) Импортируйте ограничения, создайте новый файл конфигурации ORM User.hbm.xml в том же пакете, что и сущность, и напишите метаданные ORM. Конкретный код конфигурации выглядит следующим образом:
User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表与实体对象的关系 -->
<hibernate-mapping package="com.hibernate.domain" >
<class name="User" table="user" >
<id name="id" >
<generator class="native"></generator>
</id>
<property name="name" column="name" ></property>
<property name="age" column="age" ></property>
<property name="height" column="height" ></property>
<property name="weight" column="weight" ></property>
</class>
</hibernate-mapping>
(5) Создайте новый основной файл конфигурации hibernate.cfg.xml в разделе src. Конкретный код конфигурации выглядит следующим образом:
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库url -->
<property name="hibernate.connection.url">jdbc:mysql:///demo_project</property>
<!-- 数据库连接用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库连接密码 -->
<property name="hibernate.connection.password">root</property>
<!-- 数据库方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 引入orm元数据 -->
<mapping resource="com/hibernate/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
(6) Создайте новый тестовый класс TestDemo.java и напишите тестовый код следующим образом:
TestDemo.java
package com.hibernate.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.hibernate.domain.User;
//测试Hibernate框架
public class TestDemo {
@Test
//插入信息
public void test(){
Configuration conf = new Configuration().configure();
SessionFactory sessionFactory = conf.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//保存信息
User u = new User();
u.setName("孔乙己");
u.setAge(22);
u.setHeight(172);
u.setWeight(120);
session.save(u);
tx.commit();
session.close();
sessionFactory.close();
}
}
(7), рабочий результат, информация успешно вставлена, конкретный результат выглядит следующим образом:
Рабочая среда этого проекта: jdk1.7, Tomcat7.0
3. Подробный файл конфигурации Hibernate
(1) Подробное объяснение конфигурации метаданных формы:
package
<!-- package属性:填写一个包名,在元素内部凡是需要书写完整类名的属性,就可以直接写简答类名 -->
<hibernate-mapping package="com.hibernate.domain" >
class
<!--
class元素: 配置实体与表的对应关系的
name: 完整类名
table:数据库表名
-->
<class name="User" table="user" >
id
<!-- id元素:配置主键映射的属性
name: 填写主键对应属性名
column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<id name="id" >
<!-- generator:主键生成策略 -->
<generator class="native"></generator>
</id>
property
<!-- property元素:除id之外的普通属性映射
name: 填写属性名
column(可选): 填写列名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<property name="name" column="name" >
<!-- <column name="cust_name" sql-type="varchar" ></column> -->
</property>
<property name="age" column="age" ></property>
<property name="height" column="height" ></property>
<property name="weight" column="weight" ></property>
(2) Подробное объяснение основного файла конфигурации Hibernate:
必选配置
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库url -->
<property name="hibernate.connection.url">jdbc:mysql:///demo_project</property>
<!-- 数据库连接用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库连接密码 -->
<property name="hibernate.connection.password">root</property>
<!-- 数据库方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
可选配置
<!-- #hibernate.show_sql true
#hibernate.format_sql true
-->
<!-- 将hibernate生成的sql语句打印到控制台 -->
<property name="hibernate.show_sql">true</property>
<!-- 将hibernate生成的sql语句格式化(语法缩进) -->
<property name="hibernate.format_sql">true</property>
<!--
## auto schema export 自动导出表结构,自动建表
#hibernate.hbm2ddl.auto create 自动建表,每次框架运行都会创建新的表,以前表将会被覆盖,表数据会丢失。(开发环境中测试使用)
#hibernate.hbm2ddl.auto create-drop 自动建表,每次框架运行结束都会将所有表删除。(开发环境中测试使用)
#hibernate.hbm2ddl.auto update(推荐使用) 自动生成表,如果已经存在不会再生成;如果表有变动,自动更新表(不会删除任何数据)
#hibernate.hbm2ddl.auto validate 校验。不自动生成表,每次启动会校验数据库中表是否正确,校验失败。
-->
<property name="hibernate.hbm2ddl.auto">update</property>
引入orm元数据配置
<!-- 引入orm元数据
路径书写: 填写src下的路径
-->
<mapping resource="com/hibernate/domain/User.hbm.xml" />
(1) Подробное объяснение конфигурации метаданных формы:
package
<!-- package属性:填写一个包名,在元素内部凡是需要书写完整类名的属性,就可以直接写简答类名 -->
<hibernate-mapping package="com.hibernate.domain" >
class
<!--
class元素: 配置实体与表的对应关系的
name: 完整类名
table:数据库表名
-->
<class name="User" table="user" >
id
<!-- id元素:配置主键映射的属性
name: 填写主键对应属性名
column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<id name="id" >
<!-- generator:主键生成策略 -->
<generator class="native"></generator>
</id>
property
<!-- property元素:除id之外的普通属性映射
name: 填写属性名
column(可选): 填写列名
type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<property name="name" column="name" >
<!-- <column name="cust_name" sql-type="varchar" ></column> -->
</property>
<property name="age" column="age" ></property>
<property name="height" column="height" ></property>
<property name="weight" column="weight" ></property>
(2) Подробное объяснение основного файла конфигурации Hibernate:
必选配置
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库url -->
<property name="hibernate.connection.url">jdbc:mysql:///demo_project</property>
<!-- 数据库连接用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库连接密码 -->
<property name="hibernate.connection.password">root</property>
<!-- 数据库方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
可选配置
<!-- #hibernate.show_sql true
#hibernate.format_sql true
-->
<!-- 将hibernate生成的sql语句打印到控制台 -->
<property name="hibernate.show_sql">true</property>
<!-- 将hibernate生成的sql语句格式化(语法缩进) -->
<property name="hibernate.format_sql">true</property>
<!--
## auto schema export 自动导出表结构,自动建表
#hibernate.hbm2ddl.auto create 自动建表,每次框架运行都会创建新的表,以前表将会被覆盖,表数据会丢失。(开发环境中测试使用)
#hibernate.hbm2ddl.auto create-drop 自动建表,每次框架运行结束都会将所有表删除。(开发环境中测试使用)
#hibernate.hbm2ddl.auto update(推荐使用) 自动生成表,如果已经存在不会再生成;如果表有变动,自动更新表(不会删除任何数据)
#hibernate.hbm2ddl.auto validate 校验。不自动生成表,每次启动会校验数据库中表是否正确,校验失败。
-->
<property name="hibernate.hbm2ddl.auto">update</property>
引入orm元数据配置
<!-- 引入orm元数据
路径书写: 填写src下的路径
-->
<mapping resource="com/hibernate/domain/User.hbm.xml" />
Обратите внимание на компассблог общедоступной учетной записи WeChat и ответьте в фоновом режиме"Первая серия гибернации"Получить исходный код этого проекта
Вам также может понравиться:
Эта серия будет обновляться позже, пожалуйста, обратите внимание!
Если вы считаете эту статью полезной, поделитесь ею с друзьями!
Данная статья может быть воспроизведена по желанию, просьба указывать источник!
Отсканируйте код и подпишитесь на общедоступную учетную запись WeChat, чтобы узнать больше.