Hibernate+IDEA 2017:记录我的第一个hibernate程序
2017-09-18 14:04
302 查看
环境说明:
※Windows 10 OS version 1703
※IDEA 2017.2.3
※JDK 1.8
※MySQL:5.7
※Hibernate:5.2.11
新建项目
首先呢,我们来新建项目,建一个javaweb项目.
然后往下滑,别点next,你会看到这个
选中它,你就会看到下面
那这1,2,3就得说道说道了,
1是指使用本地的Hibernate jar包,
2是指使用idea集成的jar包,
3是指稍后自己手动导入jar包
在这里呢,可以看到idea集成的是2.5.10版本的,截止到发帖时间,最新的hibernate版本是2.5.11,所以,idea里面的可能会有点过时,如果你介意,可以去官网下载最新的jar包,然后选择第一个就行.不介意的话直接选择第二项就好.
那,导入本地jar包导入哪些呢?
可以看到,在hibernate的lib目录下,有这么多jar包,其实我们只需要导入required里面的就行,也就10个左右.就可以啦.导入完成后,就进入我们的工程界面了.
项目结构
结构说明
由于Hibernate是持久化数据到数据库中的,所以还需要导入你的数据库的驱动jar包.
为什么hibernate里没有数据库驱动jar包呢?因为数据库种类不一,所以呢,就没有放入,根据自己的实际情况导入相应的jar包即可.我这里导入的是mysql的驱动.
还有一个就是单元测试jar包.用来进行单元测试.我这里的版本是4.12
config文件夹是放hibernate的全局配置文件
Student类是实体类
Student.hbm是Student的映射配置文件
HibernateTest是单元测试类
项目代码
hibernate.cfg.xml
Student.class
***Student.hbm.xml
HibernateTest.class
Bug说明
1.双击运行测试方法,出现bug:
java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
说明:上网搜索了一下,这是因为在junit4.12中没有hamcrest包了.
解决办法:下载 hamcrest-core-1.3.jar导入或者使用junit4.8.因为在4.10以上的junit中没有这个包了
2.好了,导入这个jar包后,再次双击运行,出现这个bug
org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [hibernate.cfg.xml]
说明:没找到这个配置文件
解决办法:那是因为新建的config文件夹是普通文件夹,无法找到.需要将config文件夹变成资源文件夹即可.
步骤如下:
2.1 File–>Project Structure–>Modules
2.2 如图,修改config文件夹的类型,右键config,选择sources即可.
结果
大功告成.
2017/9/18
Lucifer
※Windows 10 OS version 1703
※IDEA 2017.2.3
※JDK 1.8
※MySQL:5.7
※Hibernate:5.2.11
新建项目
首先呢,我们来新建项目,建一个javaweb项目.
然后往下滑,别点next,你会看到这个
选中它,你就会看到下面
那这1,2,3就得说道说道了,
1是指使用本地的Hibernate jar包,
2是指使用idea集成的jar包,
3是指稍后自己手动导入jar包
在这里呢,可以看到idea集成的是2.5.10版本的,截止到发帖时间,最新的hibernate版本是2.5.11,所以,idea里面的可能会有点过时,如果你介意,可以去官网下载最新的jar包,然后选择第一个就行.不介意的话直接选择第二项就好.
那,导入本地jar包导入哪些呢?
可以看到,在hibernate的lib目录下,有这么多jar包,其实我们只需要导入required里面的就行,也就10个左右.就可以啦.导入完成后,就进入我们的工程界面了.
项目结构
结构说明
由于Hibernate是持久化数据到数据库中的,所以还需要导入你的数据库的驱动jar包.
为什么hibernate里没有数据库驱动jar包呢?因为数据库种类不一,所以呢,就没有放入,根据自己的实际情况导入相应的jar包即可.我这里导入的是mysql的驱动.
还有一个就是单元测试jar包.用来进行单元测试.我这里的版本是4.12
config文件夹是放hibernate的全局配置文件
Student类是实体类
Student.hbm是Student的映射配置文件
HibernateTest是单元测试类
项目代码
hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8" ?> <!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. --> <!-- 约束文件--> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!-- 全局配置--> <hibernate-configuration> <!-- session工厂设置,也就是连接设置--> <session-factory> <!--四本一言 四本:四大基本标签:驱动,url,用户名,密码 一言:方言,数据库的方言,指明使用的是哪一个数据库 --> <!--1.配置数据库驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!--2.配置数据库的url --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test?charset=UTF-8</property> <!--3.配置用户名和密码 --> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">4187Qsx-i</property> <!--4.配置数据库方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</property> <!--5.设置键表语句的执行:create or update --> <property name="hibernate.hbm2ddl.auto">update</property> <!--6.设置显示自动生成的sql语句 --> <property name="hibernate.show_sql">true</property> <!--7.设置格式化显示的sql语句 --> <property name="hibernate.format_sql">true</property> <!--8.引入映射配置文件 --> <mapping resource="com/cs/qsx/bean/Student.hbm.xml" /> </session-factory> </hibernate-configuration>
Student.class
package com.cs.qsx.bean; public class Student { /** * 包名: com.cs.qsx.bean * 类名: Student * 类描述: 用于生成关系表的实体类 * 作者: Lucifer * 创建日期: 2017/9/18 * 创建时间: 11:39 * **/ private int id; private String name; private String gender; 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 String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", gender='" + gender + '\'' + ", age=" + age + '}'; } }
***Student.hbm.xml
<?xml version="1.0" encoding="UTF-8" ?> <!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. --> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!--1.指定要映射关系表的实体类所在的包 包名可以不写,但是在class标签中的name里就得写这个类的全限定名(packageName.className) --> <hibernate-mapping package="com.cs.qsx.bean"> <!--2.指明是用哪个实体类来生成关系表 每个实体类对应一个表,想要生成一张表必须有对应的实体类.一一对应 一般情况下,这个实体类的映射配置文件命名是符合这个规则:className.hbm.xml 而且放在和实体类同一个包下 --> <class name="Student"> <!--3.id标签,指定这张表的主键,一张表,最好都要有个主键,不建没有主键的表,而且最好主键是int类型的 name属性指定的是实体类中的哪个属性作为主键 --> <id name="id"> <!--4.generator标签指明这个主键的特性,native代表主键自增 --> <generator class="native"/> </id> <!--5.property标签的name属性是实体类中的各个除了主键之外的属性名 --> <property name="name"/> <property name="gender" /> <property name="age" /> </class> <!--6.写完映射配置文件后一定要去全局配置文件中添加 --> </hibernate-mapping>
HibernateTest.class
package com.cs.qsx.test; import com.cs.qsx.bean.Student; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Test; public class HibernateTest { /** * 包名: com.cs.qsx.test * 类名: HibernateTest * 类描述: 测试hibernate的一个单元测试类 * 作者: Lucifer * 创建日期: 2017/9/18 * 创建时间: 11:59 * **/ /* 单元测试类的几个基本要求: 1.必须要有@Test注解 2.返回值为空 3.没有形参 */ @Test public void testHibernate(){ //1.加载全局配置文件 Configuration configuration = new Configuration().configure(); //2.获取session工厂 SessionFactory sessionFactory = configuration.buildSessionFactory(); //3.创建session对象 Session session = sessionFactory.openSession(); //4.操作数据 Student student = new Student(); student.setAge(10); student.setName("楚南"); student.setGender("男"); System.out.println("保存成功:" + session.save(student)); //5.关闭session session.close(); } }
Bug说明
1.双击运行测试方法,出现bug:
java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
说明:上网搜索了一下,这是因为在junit4.12中没有hamcrest包了.
解决办法:下载 hamcrest-core-1.3.jar导入或者使用junit4.8.因为在4.10以上的junit中没有这个包了
2.好了,导入这个jar包后,再次双击运行,出现这个bug
org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [hibernate.cfg.xml]
说明:没找到这个配置文件
解决办法:那是因为新建的config文件夹是普通文件夹,无法找到.需要将config文件夹变成资源文件夹即可.
步骤如下:
2.1 File–>Project Structure–>Modules
2.2 如图,修改config文件夹的类型,右键config,选择sources即可.
结果
大功告成.
2017/9/18
Lucifer
相关文章推荐
- Java学习记录[0.3]: 使用IDEA第一个Java程序
- Hibernate第一个程序
- Hibernate概括及Hibernate第一个小程序
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序(转)
- 在IDEA中基于Maven编写Hibernate框架的javaweb程序
- 第一个Hibernate程序
- Hadoop 调试第一个MapReduce程序过程详细记录总结
- 第一个Hibernate 程序终于测试通过了
- hibernate4.3Hello 第一个程序遇到的坑 【给自己的总结】
- eclipse 下配置hibernate以及第一个hibernate小程序
- 编写你的第一个Hibernate程序
- IDEA 下写出第一个 SSH 整合框架练手项目( 一 ,Spring 与 Hibernate 整合)
- JPA+Hibernate 3.3 ——第一个JPA程序
- Hadoop 调试第一个mapreduce程序过程详细记录总结以及权限问题 Permission denied: user=dr.who
- Hibernate入门:第一个hibernate程序
- MyEclipse10下开发第一个Hibernate小程序
- Hibernate的基础---导包,配置XML文件,运行第一个程序
- JPA+Hibernate 3.3 学习小结——第一个JPA程序
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
- 第一个hibernate程序