标签:prope password mysqld nal java开发 .config 资源 自动 隔离级别
1.java持久层的一个框架
2.一个开放源代码的ORM(Object Relation Mapping,对象关系映射)框架,使得java开发人员可以使用面向对象编程的思想来操作数据库
所谓的ORM就是利用描述对象和数据库表之间的映射的元数据,自动把Java应用程序中的对象持久化到关系型数据库的表中
实体类Customer映射到Hibernate中的cst_customer表中
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping> 6 <!-- 建立类与表的映射 --> 7 <class name="com.itheima.hibernate.demo1.Customer" table="cst_customer"> 8 <!-- 建立类中的属性与表中的主键的对应关系 --> 9 <id name="cust_id" column="cust_id"> 10 <generator class="uuid"></generator> 11 </id> 12 <!-- 建立类中的普通属性和表的字段的对应 --> 13 <property name="cust_name" column="cust_name"></property> 14 <property name="cust_source" column="cust_source"></property> 15 <property name="cust_industry" column="cust_industry"></property> 16 <property name="cust_level" column="cust_level"></property> 17 <property name="cust_phone" column="cust_phone"></property> 18 <property name="cust_mobile" column="cust_mobile"></property> 19 </class> 20 </hibernate-mapping>
Hibernate的映射文件反映了持久化类和数据库表的映射信息,而Hibernate的配置文件则主要用来配置数据库的连接以及hibernate运行时所需要的各种属性的值,文件创建在src下
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6 <session-factory> 7 <!-- 连接数据库的基本参数 --> 8 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 9 <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day02</property> 10 <property name="hibernate.connection.username">root</property> 11 <property name="hibernate.connection.password">123</property> 12 <!-- 配置Hibernate的方言 --> 13 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 14 15 <!-- 可选的配置参数 --> 16 <property name="hibernate.show_sql">true</property> 17 <property name="hibernate.format_sql">true</property> 18 <property name="hibernate.hbm2ddl.auto">create</property> 19 <!-- 配置C3P0连接池 --> 20 <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 21 <!--在连接池中可用的数据库连接的最少数目 --> 22 <property name="c3p0.min_size">5</property> 23 <!--在连接池中所有数据库连接的最大数目 --> 24 <property name="c3p0.max_size">20</property> 25 <!--设定数据库连接的过期时间,以秒为单位, 26 如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 --> 27 <property name="c3p0.timeout">120</property> 28 <!--每3000秒检查所有连接池中的空闲连接 以秒为单位--> 29 <property name="c3p0.idle_test_period">3000</property> 30 31 <!-- 隔离级别配置 --> 32 <property name="hibernate.connection.isolation">4</property> 33 <!-- 配置当前线程绑定的Session --> 34 <property name="hibernate.current_session_context_class">thread</property> 35 36 <mapping resource="com/itheima/hibernate/demo1/Customer.hbm.xml"></mapping> 37 38 </session-factory> 39 </hibernate-configuration>
1 public class HibernateDemo1 { 2 @Test 3 public void demo1() { 4 //1.加载Hibernate的核心配置文件 5 Configuration configuration = new Configuration().configure(); 6 //2.创建一个SessionFactory对象,类似于JDBC的连接池 7 SessionFactory sessionFactory = configuration.buildSessionFactory(); 8 //3.通过SessionFactory获取到Session对象,类似于JDBC中的Connection 9 Session session = sessionFactory.openSession(); 10 //4.手动开启事务 11 Transaction transaction = session.beginTransaction(); 12 //5.编写代码 13 Customer customer = new Customer(); 14 customer.setCust_name("王七"); 15 session.save(customer); 16 //6.事务提交 17 transaction.commit(); 18 //7.资源释放 19 session.close(); 20 } 21 }
Configuration用于启动、加载、管理hibernate的配置文件信息。在启动Hibernate的过程中,Configuration实例首先确定Hibernate配置文件的位置,然后读取相关配置,最后创建一个唯一的SessionFactory实例,如果不想用默认的hibernate.cfg.xml配置文件,则向configure()方法中传递一个文件路径的参数
Configuration configuration = new Configuration().configure("xlm文件位置");
SessionFactory接口负责Hibernate的初始化和建立Session对象
SessionFactory实例是通过Configuration对象获得的
SessionFactory sessionFactory = configuration.buildSessionFactory();
SessionFactory的特点:
1.它是线程安全的,它的同一个实例能够供多个线程共享
2.他是重量级的,不能随意的创建和销毁它的实例
由于它的这些特点,一般情况下,一个项目只需要一个SessionFactory,因此可以抽取成一个工具类
1 public class HibernateUtils { 2 public static final Configuration cfg; 3 public static final SessionFactory sf; 4 static { 5 cfg = new Configuration().configure(); 6 sf = cfg.buildSessionFactory(); 7 } 8 public static Session openSession() { 9 return sf.openSession(); 10 } 11 }
Session是应用程序与数据库之间交互的一个单线程对象,是Hibernate运作的中心,它的主要功能是为持久化对象提供创建、读取和删除的功能,所有持久化对象必须在Session管理下才能进行持久化操作
//3.通过SessionFactory获取到Session对象,类似于JDBC中的Connection Session session = sessionFactory.openSession();
Transaction接口主要用于管理事务,他是Hibernate的数据库事务接口,且对底层的事物接口进行了封装
Transaction transaction = session.beginTransaction();
常用的管理事物的方法有
标签:prope password mysqld nal java开发 .config 资源 自动 隔离级别
原文地址:https://www.cnblogs.com/QQ1171492144/p/10541504.html