📜  Hibernate-配置(1)

📅  最后修改于: 2023-12-03 15:01:08.341000             🧑  作者: Mango

Hibernate 配置

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 指定了数据库密码。

除了上述基本配置信息外,还可配置如下信息:

  • 配置 C3P0 连接池
  • 配置二级缓存
  • 配置事务管理等
实体类映射

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 属性指定了属性的数据类型。

Session

在 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 对象与一个线程关联,是非线程安全的。