手把手教你Hibernate工程
来源:互联网 发布:大圣数据 编辑:程序博客网 时间:2024/06/05 21:00
Hibernate介绍及环境搭建:http://blog.csdn.net/ljheee/article/details/52475798
Hibernate操作一对一关系:http://blog.csdn.net/ljheee/article/details/52593662
Hibernate操作一对多关系:http://blog.csdn.net/ljheee/article/details/52599447
使用Hibernate简化了开发流程,但是使用Hibernate需要了解创建工程的细节。通过一段时间的学习,发现使用Hibernate创建工程有很多注意点,而且对于初学者来说,很容易出错,今儿特总结一下。
一、环境搭建
1、首先默认是需要Java环境支持的,还需要安装数据库,可参阅http://blog.csdn.net/ljheee/article/details/50810570配置好Java JDK等基础环境。
2、下载Hibernate库(jar包)
http://download.csdn.net/detail/ljheee/9625583
3、准备数据库驱动
http://download.csdn.net/detail/ljheee/9625612
4、Eclipse版本
eclipse-jee-mars-2-win32-x86_64.zip这个版本的Eclipse是支持动态Web工程的,如果要使用Hibernate,还需要在Eclipse中安装一个插件。这个步骤很简单,在有网 络条件下,打开Eclipse,选择工具栏菜单help---->Eclipse Marketplace,然后在搜索框搜索Hibernate,选JBoss Tools,点击安装即可自动完成。
二、Hibernate正向工程
1、新建一个普通Java工程。
2、右击工程,选工程路径:添加Hibernate相关类库jar
3、右击工程,选工程路添加数据库驱动
4、创建一个数据库连接DataBaseConnection
先在自己电脑的数据库上创建一个数据库,以作测试。
Eclipse成功安装插件后,会增加几个图标,如下图1红色箭头指示的一个显蓝色“数据库”图案:
图1
若你的Eclipse右上角没有这个,可以点击搜索框右边那个矩形按钮,选DataBase Development,如下图2:
图2
选择DataBase Development后,Eclipse界面视图就会切换,此时左侧导航如下图3:
图3
右击第一个文件夹DataBase Connections,点击New,转到创建数据库连接界面,如下图4:
图4
我用的是MySQL数据库,可以根据自己安装的数据库,选择相应的。下面的Name指定数据库连接名MySQL2test,这个命名自定义。点击Next。
数据库都支持创建用户和授予权限。我用MySQL创建了abc用户,输入用户密码。红色矩形框中的是已存在的数据库名。点击Test Connection,测试一下数据库连接是否成功,如图5代表Ping成功,即已成功连接到数据库mysql,这是使用Hibernate做对象持久化操作的基础。
图5
点击Finish完成—数据库连接的创建。
5、创建Hibernate配置文件(hibernate.cfg.xml)
右击工程,点击new--->Other,找到Hibernate选项,并展开,如下图6:
图6
选第一个Hibernate Configuration File。点击Next如下图7:
图7
点击红色椭圆“Get values from Connection”弹出小对话框,选择刚才创建好的数据库连接MySQL2test,点OK后部分内容已从数据库连接中获取帮你填好了。其中数据库方言DataBase dialect选相应的数据库类型,我使用的是MySQL。如下图8:
图8
最后,把下面的一个选项勾选了---Create a consoleconfiguration同时创建一个控制台配置文件。如下图9:
图9
点击Next,如下图10:其中版本号选4.3。点击Finish完成。
图10
6、编写POJO:Plain Ordinary JavaObject普通的Java类。
packagecom.ljheee.hello;
importjava.util.Date;
/**
* 实体类
* @authorljheee
*
*/
public class Event {
private long id;
private Stringtitle;
private Datetime;
public Event() {
}
public Event(Stringtitle, Date time) {
super();
this.title =title;
this.time =time;
}
public long getId() {
return id;
}
public void setId(longid) {
this.id =id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title =title;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time =time;
}
@Override
public String toString() {
return "Event [id=" + id + ",title=" + title + ", time=" + time + "]";
}
}
7、给这个实体类创建映射文件(classname.hbm.xml)
右击Event类,点击new--->Other,找到Hibernate选项,并展开,选HibernateXML Mapping File。点击Next,AddClass选中Event类,Finish完成。
Event类是映射文件解析:
<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mapping PUBLIC"-//Hibernate/HibernateMapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--Generated 2016-9-20 21:50:39 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<classname="com.ljheee.hello.Event"table="EVENT">
<idname="id"type="long">
<columnname="ID"/>
<generatorclass="assigned"/>
</id>
<propertyname="title"type="java.lang.String">
<columnname="TITLE"/>
</property>
<propertyname="time"type="java.util.Date">
<columnname="TIME"/>
</property>
</class>
</hibernate-mapping>
因为数据库连接MySQL2test已经指定了数据库连接的用户、要连接的哪一个数据库等信息。此映射文件,就是把一个Java实体类映射到指定数据库中的一张关系表,那么这个类的一个个字段,也会相应的成为表中的一列;一个Java对象就对应表中一条记录。
说明:
(1、<classname="com.ljheee.hello.Event"table="EVENT">
Event类映射到EVENT表,如果表不存在,会自动创建。
(2、<idname="id"type="long">
<columnname="ID"/>
<generatorclass="native"/>
</id>
Event类中的字段id作为表的主键。Generator主键生成器指定生成方式数据库native原生方式。
(3、<propertyname="title"type="java.lang.String">
<columnname="TITLE"/>
Event类中的title字段作为表中一列TITLE。
8、编辑Hibernate配置文件
如下图11,增加类的映射文件。
图11
9、编写测试类,增删改查数据
package com.ljheee.hello;
importjava.util.Date;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.boot.MetadataSources;
importorg.hibernate.boot.registry.StandardServiceRegistry;
importorg.hibernate.boot.registry.StandardServiceRegistryBuilder;
publicclass Test {
public static void main(String[] args) {
//注册
StandardServiceRegistry registry =new StandardServiceRegistryBuilder().configure().build();
//会话工厂
SessionFactory factory = newMetadataSources(registry).buildMetadata().buildSessionFactory();
Session session =factory.openSession();//获得会话工厂
session.beginTransaction();//开启事务
//存储对象
session.save(newEvent("A", new Date()));//一行搞定
session.save(newEvent("B", new Date()));
session.getTransaction().commit();
session.close();
}
}
因为类的映射文件中Generator主键生成器指定生成方式数据库native原生方式。MySQL支持主键递增,一次创建一个Event对象,可以不赋值id。
- 手把手教你Hibernate工程
- 手把手教你配置hibernate
- 手把手教你从最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate(含源码下载)
- 手把手教你从最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate(含源码下载)
- 手把手教你配置Spring+hibernate
- 手把手教你如何玩转Hibernate
- 手把手教你如何玩转Hibernate
- Hibernate实验项目全程跟踪,手把手教你配置Hibernate
- 手把手教你写框架之ShykyAnnotations - 工程搭建
- 手把手教你Spring+SpringMVC+MyBatis工程创建
- 手把手教你如何玩转SSH(Spring+Strus2+Hibernate)
- 手把手教你搭建一个简单Hibernate项目
- 手把手教你如何玩转SSH(Spring+SpringMVC+Hibernate)
- 手把手教你批处理
- 手把手教你做小抄
- 手把手教你申请专利
- 手把手教你ARC
- 手把手教你用动软
- poi导出用户资料基本操作
- Material Design学习:CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout
- 原型模式
- MFC中创建多线程
- 【OpenGL】直线生成算法DDA+Bresenham
- 手把手教你Hibernate工程
- mysql5.7 upgrade issue GROUP BY incompatible with sql_mode=only_full_group_by
- Hibernate深入理解----Hibernate 检索方式(HQL,QBC,本地SQL)
- (一)Solr的使用安装
- CodeForces 653A【水】
- 黑马Android76期从入门到就业班视频教程下载
- 字符串中找出连续最长的数字字符串的实例代码
- Android面试之Java引用类型简答
- Hadoop 集群监控