Hibernate+Junit-史上最详细图解教程-从环境配置到入门
来源:互联网 发布:淘宝如何设计水印图 编辑:程序博客网 时间:2024/06/04 19:41
工程目录结构在最后
Eclipse版本:Mars 4.5.2
数据库:MySQL+navicat
1.需要Hibernate Tools for Eclipse plugins
在JBoss Tools下载与自己Eclipse版本相对应的Tools。用于方便的构建hibernate工程。
选择好版本后,会出现这样一个界面:
这时直接把链接(红圈)拖进Eclipse就行了。
然后获取资源后,点击finish,会进行在线安装:
中途可能会弹出警告,忽略就是,装完会重启:
重启后会弹出是否加入用户体验之类的:
然后我们在File->New里面就可以看到hibernate选项了:
2.下载jdbc驱动
我用的mysql数据库,在官网下载Mysql JDBC
解压出其中的jar包就好。
3.下载Hibernate包
在Hibernate官网下载:
大概100M,下载完后解压出来:
在文件夹下的所有jar包都需要。
4.下载Junit
junit的jar包下载就很多了,我这里用的是4.10版
5.创建User Library
为了方便导包,我们创建自己的用户library:
在Windows-preference下:
将jar包都引进来。
接下来新建一个java工程
在工程下右键–》properties下:
点击next后选中需要的自定义库:
然后在工程下就会多出来自己的库:
上面有个junit测试单元不是必须的。
6.配置文档
在工程src目录下新建一个cfg.xml文件:
在编写代码前可能没有提示功能,这时找到hibernate的下载包:
这个路径有dtd文件,导入到Eclipse中:
然后编写文档:
<?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> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=UTF-8</property> <property name="connection.username">root</property> <property name="connection.password"></property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">create</property> </session-factory></hibernate-configuration>
7.持久化类
在src目录下写一个实体类:
public class Student { /** * 遵循javabean要求 * 1.公有的类 * 2. 提供公有的布袋参数的默认的构造方法 3. 属性要私有化private 4. 属性要用setter/getter封装 */ private int sid; private String name; private String number; public Student(){ } public Student(int sid, String name, String number) { super(); this.sid = sid; this.name = name; this.number = number; } public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; }}
8.创建对象-关系映射文件
同样新建一个hbm.xml文件:
一路next后,它会自动帮我们生成Student的hbm.xml文件:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2016-4-26 16:07:07 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="Student" table="STUDENT"> <id name="sid" type="int"> <column name="SID" /> <generator class="assigned" /> </id> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> <property name="number" type="java.lang.String"> <column name="NUMBER" /> </property> </class></hibernate-mapping>
然后我们将它引入cfg.xml文件中,加一句:
<mapping resource="Student.hbm.xml"/>
9.建数据库
我用的navicat:
10.使用junit测试
虽然可以不用junit测试,但他更加方便。
首先看一下junit的三个注解标签:Before,After,Test:分别代表执行测试前(一般进行初始化),执行后(一般销毁资源)和执行测试代码。
在工程中建一个test文件夹,里面写一个StudentTest类:
import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.Metadata;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;public class StudentTest { /* * 测试学生类 */ private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init() { /** * 在之前用ServiceRegistryBuilder,但是 在hibernate4.3.x版本后 * ServiceRegistryBuilder 过时了,可以用StandardServiceRegistryBuilder替代, * 但最好还是用下面的方法 */ // 创建配置对象 //Configuration config = new Configuration().configure(); // 创建服务注册对象 // ServiceRegistry serviceRegistry = new // ServiceRegistryBuilder().applySettings(config.getProperties()).build(); // //创建会话工厂对象 // sessionFactory = config.buildSessionFactory(serviceRegistry); // //会话对象 // session = sessionFactory.openSession(); // //开启事务 // transaction = session.beginTransaction(); StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build(); Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder() .applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE).build(); sessionFactory = metadata.getSessionFactoryBuilder().build(); // 会话对象 session = sessionFactory.openSession(); // 开启事务 transaction = session.beginTransaction(); } @After public void destory() { // 先提交事务 transaction.commit(); // 关闭会话 session.close(); // 关闭会话工厂 sessionFactory.close(); } @Test public void testSaveStudent() { // 生成学生对象 Student s = new Student(1, "jimo", "0001"); session.save(s);// 保存对象进数据库 }}
仔细研究下上面的代码就可以知道Hibernate怎么做的。
现在,按图操作:
右键,选择Junit测试:
第一次可能会弹出:
android开发基本没用过。
然后,报错了,原因是找不到Mapping对应的资源,没错,我们需要把Student.hbm.xml文件移到cfg.xml文件找得到的地方,于是,我移到了同一个目录下,所以最后工程的完整目录如下:
现在看一下junit测试的结果:
在console中打印出一些东西:
Hibernate: drop table if exists STUDENTHibernate: create table STUDENT ( SID integer not null, NAME varchar(255), NUMBER varchar(255), primary key (SID) )四月 26, 2016 4:59:50 下午 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSourcesINFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@10fde30a'Hibernate: insert into STUDENT (NAME, NUMBER, SID) values (?, ?, ?)
然后打开数据库,发现多了一张Student的表(坑人的是需要重启navicat):
11.总结
也许,这就是命吧,开始总是艰难的。
- Hibernate+Junit-史上最详细图解教程-从环境配置到入门
- opencv环境配置 从入门到放弃.....
- JUNIT 入门1(环境配置)
- java从入门到JUnit到maven
- 非常详细的Hibernate环境搭建【图解教程】及简单使用
- 【Hibernate】从入门到精通(二)环境搭建实例
- windows下用ADT进行android NDK开发的详细教程(从环境搭建、配置到编译全过程)
- windows下用ADT进行android NDK开发的详细教程(从环境搭建、配置到编译全过程)
- windows下用ADT进行AndroidNDK开发的详细教程(从环境搭建 配置到编译全过程)
- Metasploit从入门到放弃系列教程 第一节 环境准备
- Java配置Hibernate详细教程
- Java配置Hibernate详细教程
- JavaWeb从入门到放弃(1)-配置环境
- hibernate从入门到精通
- Hibernate从入门到深入
- Jayway第一讲:ionic从搭建开发环境到生成apk详细教程
- Markdown教程:从入门到入门
- webpack 入门环境配置教程
- poj #3971:scales
- Asp.Net alert弹出提示信息的5种方法
- 在PHP调用JS中的方法,以此来解决浏览器兼容问题
- btrace使用
- 使用spring创建一个RESTful Web Service
- Hibernate+Junit-史上最详细图解教程-从环境配置到入门
- c# 3.0 get set 默认值
- JavaScript入门学习5 DOM操作2
- 关于JS的Ajax方法导致跨域问题的解决办法
- 网站运行状态检测工具
- Tomcat服务器配置,二级域名,域名访问
- 关于volley框架源码解析
- php小笔记 函数传值细节分析
- java中list,set,map的区别(笔记记录)