前言
说实话,老师拿着18年的视频19年来讲
确实有点别扭
还用着废弃的方法…
小声的吐槽下
工具
- IntelliJ IDEA 2019.02
- Hibernate 5.4.8
Hibernate 官网下载地址 传送起飞
PS:拉到下面就可以看到下载项了,不过网有点卡…
所以想了想传到网盘了,网速不行的话试试百度网盘
百度网盘 提取码:yxnb
新建一个Java项目
首先 左上角 File -> New -> Project
然后一直next最后点finish就行了
导入Jar包
找到我们先前下载的Hibernate的压缩包,需要引入的包在
hibernate-release-5.4.8.Final\lib\required
我们先建一个lib的文件夹并把它设置为jar的文件夹
详细的细节可以参考 从0搭建一个基于Struts2的web项目
这里就不啰嗦了,步骤都是一样的
导入后目录是这样的
使用
为了简单使用Hibernate的话需要一个POJO类
所以我们建一个Person类作为实体类
建立一个Hibernate01来测试代码
建立一个实体类就需要一个类名.hbm.xml
的配置文件 s
整个项目需要一个hibernate.cfg.xml
的配置文件,位于src/
下
都弄完之后差不多就是下面这样子
类的映射文件编写
编写Person类
这个可以随便写写,不一定要和我一样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| package design.hibernate.pojo;
public class Person {
private int id; private String username; private byte age;
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public byte getAge() { return age; }
public void setAge(byte age) { this.age = age; }
@Override public String toString() { return "Person{" + "id=" + id + ", username='" + username + '\'' + ", age=" + age + '}'; } }
|
编写Person.hbm.xml
一打开,很蒙,XML约束都没有,不过无妨
还记得我们下载的压缩包吗?打开
hibernate-release-5.4.8.Final\project
然后搜索 .hbm.xml
就能看到很多hbm.xml的文件了
我们随便打开一个
1 2 3 4 5 6 7 8 9 10 11 12
| <?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 default-lazy="false"> <class name="org.hibernate.test.legacy.Custom" persister="org.hibernate.test.legacy.CustomPersister"> <id type="string" name="id" column="id_" length="64" unsaved-value="null" access="field"> <generator class="uuid.hex"/> </id> <property name="name"/> </class> </hibernate-mapping>
|
把一些不需要的无关的删掉
保留我们需要的
1 2 3 4 5 6 7 8
| <?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> </class> </hibernate-mapping>
|
根据我们的类来编写xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?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="design.hibernate.pojo.Person"> <id name="id" type="int"> <generator class="identity"/> </id> <property name="username" type="string" length="50"/> <property name="age" type="byte"/> </class> </hibernate-mapping>
|
根配置文件编写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//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://localhost:3306/hibernate</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.hbm2ddl.auto">create</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.connection.autocommit">false</property>
<mapping resource="design/hibernate/pojo/Person.hbm.xml"/> </session-factory> </hibernate-configuration>
|
到这里我们的文件基本就都搞定了
接下来可以写一个类来测试下
测试Hibernate
编写一个Hibernate01的类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| package design.hibernate.test;
import design.hibernate.pojo.Person; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration;
public class Hibernate01 { public static void main(String[] args) { Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession();
Person person = new Person(); person.setUsername("lwf"); person.setAge((byte) 11);
Transaction transaction = session.beginTransaction(); session.save(person); transaction.rollback(); System.out.println(person); } }
|
运行之后
我们可以看到
Hibernate判断是否存在表,存在就删除
然后Hibernate建立Person表
根据代码Hibernate插入一条数据
后记
全程没有使用到SQL,舒服的一塌糊涂
但是我喜欢MyBatis
之前也就视频学过一些
没有深入地学这个东西
学还是要学的
万一要用到呢 …