所属分类:Hibrenate
其实之前也是了解过Hibernate,但是现在博主为了避免手高眼低的情况发生,决定对陌生的Hibernate再次造访,之前的博文是从朋友(imfuwei.com)那里偷过来的。所以不是我自己去学习的,现在我自己学习了一下,然后我在完善一下Hibernate。 Hibernate的作者是Gavin King。其原是Jboss下的一名员工,因为Hibernate的缘故,整个公司被redhat收购,详情去百度,本博主不讲故事。 目前用的是官方最新版的5.2.10环境,配合MySQL数据库以及其Driver For Java还有就是Junit(一个单元测试工具)后面打包Jar包。
Hibernate工作原理?不存在的,我也不知道的,简单绘个小图吧
画不来 偷了一张
Hibernate数据连接重点(我认为)
DB连接四要素
方言
C3P0数据库源
当前Session上下文
1.Thread
2.Jpa(Java事务API) 座分布式用
3.Spring Session Context(整合框架会用到)
接下来,就是配置Hibernate.hbm.xml配置文件
首先找到配置映射约束文件
hibernate-core-5.2.10.Final.jar
这个Jar包的org.hibernate包里面包含着约束文件,如两图所示
configuration是我们要的配置文件,Mapping是映射文件,所以先从configuration开刀
我用的dtd,红框勾选的地方
新建一个hibernate.cfg.xml在Src跟目录下
然后复制以下代码
<?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> <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hibernate?useSSL=true</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123</property> <!-- 方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</property> <!-- 数据库连接池(数据源) --> <property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property> <!-- 当前Session上下文 --> <property name="hibernate.current_session_context_class">thread</property> <!-- 自动建表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 显示SQL语句 --> <property name="hibernate.show_sql">true</property> <!-- 配置映射 --> <mapping resource="com/minedeed/beans/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>
然后就是新建一个beans包
新建一个student类,大家都懂
private Integer id; private String name; private Double score;
最后新建一个student.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> <!-- 类到表的映射,属性到字段的映射 --> <class name="com.minedeed.beans.Student" table="t_student"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name"></property> <property name="score" column="score"></property> </class> </hibernate-mapping>
然后test //1.加载主配置文件 Configuration cfg = new Configuration().configure(); //2.创建Session工厂 SessionFactory sf = cfg.buildSessionFactory(); //3.获取session Session session = sf.getCurrentSession(); Student student = new Student(); student.setId(1); student.setName("张三"); student.setScore(99.5); //4.开启事务 try { session.beginTransaction(); session.save(student); session.getTransaction().commit(); } catch (Exception e) { // TODO Auto-generated catch block //事务回滚 session.getTransaction().rollback(); }
然后结束
最后完美