📅  最后修改于: 2023-12-03 15:01:08.341000             🧑  作者: Mango
Hibernate 是一个流行的,用于 Java 应用程序的 ORM(对象关系映射)框架。它的主要作用是将 Java 对象映射到关系数据库表中,简化了数据库访问操作。
Hibernate 的配置文件是 hibernate.cfg.xml
,它定义了 Hibernate 的基本配置信息,如数据库连接信息、映射文件等。以下是一个简单的 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.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
</session-factory>
</hibernate-configuration>
其中,session-factory
指定了 Hibernate 的会话工厂,hibernate.dialect
指定了数据库方言,hibernate.connection.driver_class
指定了数据库驱动类,hibernate.connection.url
指定了数据库连接 URL,hibernate.connection.username
指定了数据库用户名,hibernate.connection.password
指定了数据库密码。
除了上述基本配置信息外,还可配置如下信息:
Hibernate 中的实体类需要与数据库中的表进行映射,以便访问表中的数据。Hibernate 通过 XML 映射文件来描述实体类的属性和表中字段的映射关系。以下是一个简单的映射文件示例:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.example.User" table="users">
<id name="id" type="int">
<generator class="native"/>
</id>
<property name="firstName" column="first_name" type="string"/>
<property name="lastName" column="last_name" type="string"/>
<property name="email" column="email" type="string"/>
</class>
</hibernate-mapping>
其中,class
元素定义了实体类的映射信息,name
属性指定了实体类的类名,table
属性指定了映射到哪个表。
id
元素定义了实体类的主键信息,name
属性指定了实体类中的属性名,type
属性指定了属性的数据类型,generator
元素指定了主键生成策略。
property
元素定义了实体类中的属性映射信息,name
属性指定了实体类中的属性名,column
属性指定了映射到哪个表中的字段,type
属性指定了属性的数据类型。
在 Hibernate 中,Session
是应用程序与数据库之间的中介。它负责管理 Hibernate 对象的映射关系,并提供数据库操作方法,可使用以下方式创建 Session
:
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
其中,Configuration
对象负责读取 hibernate.cfg.xml
配置文件,并创建一个 SessionFactory
对象。SessionFactory
对象是线程安全的,因此建议在应用程序中只创建一个 SessionFactory
对象。Session
对象则表示一个数据库会话,在应用程序访问数据库时,需要创建多个 Session
对象,每个 Session
对象与一个线程关联,是非线程安全的。