Hibernate5.4的环境搭建
环境 搭建
2023-09-11 14:18:14 时间
(1)项目中添加Hibernate依赖
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.4.2.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency>
(2)项目中添加Hibernate配置文件
1 <?xml version='1.0' encoding='utf-8'?> 2 3 <!DOCTYPE hibernate-configuration PUBLIC 4 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 5 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 6 7 <hibernate-configuration> 8 9 <session-factory> 10 11 <!-- 数据库连接设置 --> 12 13 <!--数据库连接驱动--> 14 <!--<property name="connection.driver_class">com.mysql.jdbc.Driver</property>--> 15 <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> 16 17 <!--数据库连接地址--> 18 <!--<property name="connection.url">jdbc:mysql://localhost:3306/hibernatedemo</property>--> 19 <property name="connection.url">jdbc:mysql://localhost:3306/hibernatedemo?serverTimezone=UTC</property> 20 21 <!--数据库连接用户名--> 22 <property name="connection.username">root</property> 23 24 <!--数据库连接密码--> 25 <property name="connection.password">123456</property> 26 27 <!-- 配置内置连接池中的连接数 --> 28 <property name="connection.pool_size">5</property> 29 30 <!-- 数据库方言配置 --> 31 <!--<property name="dialect">org.hibernate.dialect.MySQLDialect</property>--> 32 <property name="dialect">org.hibernate.dialect.MySQL8Dialect</property> 33 34 <!--<!– Disable the second-level cache –>--> 35 <!--<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>--> 36 37 <!-- 操作数据库时,是否向控制台打印Sql语句 --> 38 <property name="show_sql">true</property> 39 40 <!-- 事务自动提交 --> 41 <!--<property name="connection.autocommit">true</property>--> 42 43 <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession --> 44 <!--<property name="current_session_context_class">thread</property>--> 45 46 <!-- 打印Sql语句前,是否将Sql语句格式化 --> 47 <property name="format_sql">true</property> 48 49 <!-- 生成表结构的策略配置 50 update(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构. 51 如果存在表结构,并且表结构与实体一致,那么不做修改 52 如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列. 53 create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失) 54 create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构. 55 validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常. 56 --> 57 <property name="hbm2ddl.auto">update</property> 58 59 <!-- 引入ORM映射文件 填写src之后的路径--> 60 <mapping resource="User.hbm.xml"/> 61 62 <!-- Names the annotated entity class --> 63 <!--<mapping class="cn.coreqi.entities.Users"/>--> 64 65 </session-factory> 66 67 </hibernate-configuration>
(3)添加表对象关系映射文件 || 在实体类上添加注解(推介)
表对象关系映射文件
1 <?xml version="1.0"?> 2 3 <!DOCTYPE hibernate-mapping PUBLIC 4 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 5 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 6 7 <!-- 8 ORM元数据 表对象关系映射文件 9 package : 配置该配置文件中类所在的包. 10 --> 11 <hibernate-mapping package="cn.coreqi.entities"> 12 13 <!-- 14 class标签: 配置实体与表的关系 15 name属性: 实体类类名 16 table属性: 与实体类对应的数据表名称 17 dynamic-insert属性: 动态插入 默认值false 18 true=>如果字段值为null,不参与insert语句 19 dynamic-update属性: 动态更新 默认值false 20 true=>没改动过的属性,将不会生成到update语句中 21 --> 22 <class name="Users" table="users"> 23 <!-- id标签: 配置实体类与数据表的主键映射 24 name: 实体类中主键的属性名称 25 column: 数据表中主键的列名 26 length: 列的数据长度 27 unsaved-value(不常用): 指定主键为什么值时,当做null来处理. 28 access(强烈推荐不要用):field 那么在操作属性时,会直接操作对应的字段而不是get/set方法 29 --> 30 <id name="Id" column="Id"> 31 <!-- generator 主键生成策略 32 1.increment 数据库自己生成主键. 先从数据库中查询最大的ID值,将ID值加1作为新的主键 33 2.identity 依赖于数据的主键自增功能 34 3.sequence 序列,依赖于数据中的序列功能(Oracle). 35 4.hilo(纯了解,永远用不到) : Hibernate自己实现序列的算法,自己生成主键. (hilo算法 ) 36 5.native 自动根据数据库判断,三选一. identity|sequence|hilo 37 6.uuid 生成32位的不重复随机字符串当做主键 38 7.assigned 自己指定主键值. 表的主键是自然主键时使用. 39 --> 40 <generator class="identity"/> 41 </id> 42 <!-- property 实体类属性与数据表中列的映射 43 name : 实体类中属性名称 44 column : 数据表中列的名称 45 length : 数据长度 46 precision: 小数点后的精度 47 scale: 有效位数 48 insert(一般不用): 该属性是否加入insert语句. 49 update(一般不用): 该属性是否加入update语句. 50 not-null : 指定属性的约束是否使用 非空 51 unique : 指定属性的约束是否使用 唯一 52 type: 表达该属性的类型,可以用三种方式指定属性 53 Ⅰ: java类型 java.lang.String 54 Ⅱ: 数据库类型指定 varchar 55 Ⅲ: Hibernate类型指定 string 56 --> 57 <property name="userName" column="UserName" type="string"/> 58 <property name="passWord" column="PassWord" type="string"/> 59 <property name="enabled" column="Enabled" type="int"/> 60 </class> 61 62 </hibernate-mapping>
添加了注解的实体类(推荐)启动此种方式需要在Hibernate配置文件中启动
62 <!-- Names the annotated entity class --> 63 <!--<mapping class="cn.coreqi.entities.Users"/>-->
1 package cn.coreqi.entities; 2 3 import org.hibernate.annotations.GenericGenerator; 4 import javax.persistence.*; 5 import java.io.Serializable; 6 7 @Entity 8 @Table(name = "users") 9 public class Users implements Serializable { 10 11 @Id 12 @GeneratedValue(generator="diy") 13 @GenericGenerator(name="diy", strategy = "identity") 14 private Integer Id; 15 @Column 16 private String UserName; 17 @Column 18 private String PassWord; 19 @Column 20 private Integer Enabled; 21 22 public Integer getId() { 23 return Id; 24 } 25 26 public Users() { 27 } 28 29 public void setId(Integer id) { 30 Id = id; 31 } 32 33 public String getUserName() { 34 return UserName; 35 } 36 37 public void setUserName(String userName) { 38 UserName = userName; 39 } 40 41 public String getPassWord() { 42 return PassWord; 43 } 44 45 public void setPassWord(String passWord) { 46 PassWord = passWord; 47 } 48 49 public Integer getEnabled() { 50 return Enabled; 51 } 52 53 public void setEnabled(Integer enabled) { 54 Enabled = enabled; 55 } 56 57 @Override 58 public String toString() { 59 return "Users{" + 60 "Id=" + Id + 61 ", UserName='" + UserName + '\'' + 62 ", PassWord='" + PassWord + '\'' + 63 ", Enabled=" + Enabled + 64 '}'; 65 } 66 }
(4)编写dao文件
1 package cn.coreqi.dao.hibernate; 2 3 import cn.coreqi.entities.Users; 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.hibernate.Transaction; 7 import org.hibernate.boot.MetadataSources; 8 import org.hibernate.boot.cfgxml.spi.LoadedConfig; 9 import org.hibernate.boot.registry.StandardServiceRegistry; 10 import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 11 import org.hibernate.cfg.Configuration; 12 import org.springframework.stereotype.Repository; 13 14 import java.io.File; 15 16 @Repository 17 public class UsersHibernate { 18 //private SessionFactory sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); 19 private final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build(); 20 private SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); 21 public void addUsers(){ 22 Session session = sessionFactory.openSession(); 23 Transaction ts = session.beginTransaction(); 24 Users users = new Users(); 25 users.setUserName("gaoxing"); 26 users.setPassWord("mmmmm"); 27 users.setEnabled(1); 28 session.save(users); 29 ts.commit(); 30 session.close(); 31 } 32 }
相关文章
- [AaronYang原创] 敏捷开发-Jira 6.0.5环境搭建[1]
- Hadoop2.2.0环境下Sqoop1.99.3安装
- EasyDarwin相关Android安卓客户端EasyPusher/EasyPlayer/EasyCamera/EasyClient在无开发环境进行log抓取
- Centos配置为驱动程序开发环境
- golang基础环境配置
- Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse
- 一步步把 SAP UI5 应用部署到 SAP BTP Kyma 运行环境中去
- 如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数
- Atitit 工作手册之 消防法 宿舍消防及安全公约 为确保学生宿舍的消防安全、人身安全以及财产安全,为学生创查一个良好、舒适的生活环境,学校和学生特签订本公约。1寝室内不得存放易燃、易爆、易腐蚀或
- java语言学习003_开发环境基础配置和安装(jdk,jre,eclipse&myeclipse)
- 〖Python零基础入门篇②〗- Python编程环境搭建 - Pycharm 简介、安装与配置
- 《C++程序设计实践与技巧:测试驱动开发》 环境搭建遇到的坑
- Ubuntu下nginx+uwsgi+flask的执行环境搭建
- 使用 Windows 10 WSL 搭建 ESP8266 编译环境并使用 VSCODE 编程(一)(2019-08-23)
- 测试开发开工第一天--如何进行电脑环境搭建?
- ROS学习(一)—— 环境搭建
- selenium基础--环境搭建
- CentOS 7 yum安装 openjdk 环境