IDEA2019.3配置Hibernate IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)
MaskedRuler 人气:0准备工作
创建一个纯java项目,什么都不选直接建
创建数据库、表以及少量记录
CREATE DATABASE test; USE test; CREATE TABLE t_user( ID INT AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(20), AGE int); insert into testHibernate(NAME,AGE) VALUES ('张三',20), ('李四',21), ('王五',22)
使用IDEA自带的数据库图形查看如下
在IDEA中连接数据库的步骤如下
配置
配置完的完整文件结构如下图
引用相关包
在菜单选择File-Project Structure
选择ProjectSettings下的Libaries,点击“+”号,选择Java
导入Hibernate相关的包。
找到放hibernate包的地方,把lib下required中的所有包选中导入
在导完Hibernate包后的列表里直接点“+”添加其他包
导入有关mysql的包。
我用了之前tomcat里的,主要是得匹配你的MySQL版本
最后结果如下图,点击Apply应用
可以在下方的ExternalLibararies里查看导入了哪些包
实体类(User.java)
创建一个对应数据库表的实体类,代码如下
package entity; public class User { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
关于如何自动化生成getter与setter
快捷键“Alt+Ins”,鼠标单击右键也会有个Generate选项
选择要生成的属性,然后点OK
配置User实体类(user.hbm.xml)
<?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 name="entity.User" table="t_user"><!-- name选择刚才的实体类,table写上实体类对应表格的名字 --> <id name="id" column="id"><!-- id是实体类属性的名字,column是表格中与实体类对应的列名(如果id和column一样可以省略column) --> <generator class="native"/> </id> <property name="name" column="name"/> <property name="age" column="age"/> </class> </hibernate-mapping>
Hibernate配置文件(hibernate.cfg.xml)
<!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.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 方言模式,不同的数据库用不同的方言,里面的值要写全,下面会给出一个表 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- mysql驱动 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai</property><!-- 数据库连接,填上面IDEA连数据库的那个界面里的URL --> <property name="hibernate.connection.username">root</property><!-- MySQL用户名 --> <property name="hibernate.connection.password">123456</property><!-- MySLQ密码 --> <property name="show_sql">true</property> <mapping resource="entity/user.hbm.xml"/><!-- 选择User的配置文件 --> </session-factory> </hibernate-configuration>
方言选择
这里只给了三个有关MySQL的,详细的可以参考这篇文章hibernate 配置数据库方言
关系数据库管理系统 | 方言 |
---|---|
MySQL | org.hibernate.dialect.MySQLDialect |
MySQL with InnoDB | org.hibernate.dialect.MySQLInnoDBDialect |
MySQL with MyISAM | org.hibernate.dialect.MySQLMyISAMDialect |
InnoDB:
MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎。它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的,很少被回滚。InnoDB的性能与自动崩溃恢复的特性,使得它在非事务存储需求中也很流行。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。
MyISAM:
在MySQL 5.1 及之前的版本,MyISAM是默认引擎。MyISAM提供的大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM并不支持事务以及行级锁,而且一个毫无疑问的缺陷是崩溃后无法安全恢复。正是由于MyISAM引擎的缘故,即使MySQL支持事务已经很长时间了,在很多人的概念中MySQL还是非事务型数据库。尽管这样,它并不是一无是处的。对于只读的数据,或者表比较小,可以忍受修复操作,则依然可以使用MyISAM(但请不要默认使用MyISAM,而是应该默认使用InnoDB)
测试是否配置成功
创建一个用于测试的文件manegeUser.java
package dao; import entity.User; import org.hibernate.*; import org.hibernate.cfg.Configuration; public class manageUser { public static void main(String[] args){ Configuration cfg = null; SessionFactory sf = null; Session session = null; Transaction ts = null; User u = new User(); u.setName("赵六"); u.setAge(66); try { cfg = new Configuration().configure(); sf = cfg.buildSessionFactory(); session = sf.openSession(); ts = session.beginTransaction(); session.save(u); ts.commit(); }catch (HibernateException e){ e.printStackTrace(); if(ts != null){ ts.rollback(); } }finally { session.close(); sf.close(); } } }
按“Ctrl+Shift+F10”执行该函数可看到如下输出
并且也成功插入了一条记录
配置成功
加载全部内容