Hibernate:5.8.0java
MySQL:8.0.21mysql
项目结构:解压缩hibernate压缩包以后,相关jar包目录以下,将目录下的全部jar包导入到项目中(导入的位置不固定,能够本身建立一个文件夹用来存放导入的jar包)
除此以外还须要导入的jar包sql
1). 链接MySQL的jar包
2). javaee-api-7.0.jar数据库
当导入的jar包显示以下时:api
此时只是将jar包复制到了项目中,但没有将jar包添加到构建路径中,继续执行操做session
选中全部jar包,右击选择Build Path选择Add to Build Path,导入成功后显示以下:app
1)实体类映射文件User.hbm.xmlide
文件名不固定,能够随便命名,位置固定测试
<?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><!-- name是实体类路径(包名.类名) table是数据表名称 --><class name="user.User" table="user_info"><!-- 实体类中要有一个惟一属性 数据表中也要有一个惟一列 --><!-- name表示实体类中的惟一属性 column表示数据表中的惟一列 --><!-- name表示实体类中的属性名 colum表示数据表的列名 能够省略 默认和name相同 --><id name="Id" column="Id"><!-- 设置数据表的Id为主键 自动增加 --><generator class="native"></generator></id><!-- 配置实体类中的其余属性和数据表的映射 --><!-- name表示实体类中的属性名 colum表示数据表的列名 能够省略 默认和name相同 --><property name="Name" column="Name"></property><property name="Age" column="Age"></property><property name="Address" column="Address"></property></class></hibernate-mapping>
配置的所有都是实体类中属性的映射ui
2)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><!-- 1.配置数据库信息 必须配置--><!-- 数据库驱动 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- 数据库url --><property name="hibernate.connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai</property><!-- 数据库用户名 --><property name="hibernate.connection.username">root</property><!-- 数据库密码 --><property name="hibernate.connection.password">root</property><!-- 2.配置hibernate信息 可选 --><!-- 输出底层SQL语句 --><property name="hibernate.show_sql">true</property><!-- 格式化SQL语句 --><property name="hibernate.format_sql"></property><!-- 自动建立表 --><!-- update : 若是已经有相同名称的表则更新 若没有则建立 --><property name="hibernate.hbm2ddl.auto">update</property><!-- 配置方言 识别不一样数据库关键字 --><property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property><!-- 3.添加映射文件 必须配置--><mapping resource="user/User.hbm.xml"/></session-factory></hibernate-configuration>
package user;public class User {private int Id;private String Name;private int Age;private String Address;public int getId() {return Id;}public void setId(int id) { Id = id;}public String getName() {return Name;}public void setName(String name) { Name = name;}public int getAge() {return Age;}public void setAge(int age) { Age = age;}public String getAddress() {return Address;}public void setAddress(String address) { Address = address;}}
package hibernate;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import user.User;public class HibernateDemo {public static void main(String[] args) {// 1.建立configuration对象// 获取src目录下的核心配置文件hibernate.cfg.xml 将文件放到建立的configuration对象中 也能够归纳为 加载核心配置文件// 获取的核心配置文件是固定的 若是核心配置文件名称与要求的不一致 则没法获取 Configuration configuration = new Configuration().configure();// 2.建立sessionFactory对象// 读取映射文件和实体类 并建立数据库 SessionFactory sessionFactory = configuration.buildSessionFactory();// 3.建立session对象// 执行SQL的增删改查 Session session = sessionFactory.openSession();// 4.开启事务// 获取事务对象 能够提交事务或回滚事务 org.hibernate.Transaction tx = session.beginTransaction();// 5.数据库操做// 经过操做实体类来改变数据库中的值// 添加数据 User user = new User();// 由于Id列为自动增加 因此能够不用添加 user.setName("王五"); user.setAge(17); user.setAddress("东北");// 调用session的save方法实现添加 session.save(user);// 6.提交事务 tx.commit();// 7.关闭资源 session.close(); sessionFactory.close();}}
若是核心配置文件中配置了自动建立表,那在执行测试类以前只须要建立好数据库就能够,在执行时,hibernate会为你自动建立指定的表
我将hibernate压缩文件和所须要的jar包整理了下放到这,有须要的能够去取hibernate压缩文件及相关jar包获取地址:https://pan.baidu.com/s/18NhE-EnPMrpIgNr8JnK8zg提取码:pk6w