- 浏览: 124528 次
- 性别:
- 来自: 深圳
文章分类
最新评论
本例将使用struts2和hiberante开发,首选将struts2相关的jar包复制到web 工程的WebRoot\WEB-INF\lib目录下。
所需的JAR包如下图,
然后将连接mysql数据库所需的驱动JAR包也同样复制到lib目录中
右击工程名 MyEclipse->Add Hibernate Capablities
弹出如下窗口,按如下勾选配置好,点击下一步
接下去的两步可以不配置,去年勾选,即不配置数据库连接与创建session工厂。
点击完成后,会在lib包上出现很多hibernate相关的JAR包
例子:下面尝试用hibernate将Person对象存入数据库中
hibernate.cfg.xml配置文件,用于配置数据库的相关连接信息
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property><!--hibernte为数据库名--> <property name="connection.username">root</property> <property name="connection.password">123456</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource="Person.hbm.xml"></mapping> </session-factory> </hibernate-configuration>
HibernateUtil .java 用来获取session及关闭session
package com.hibernate.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static SessionFactory sessionFactory; static{ try{ sessionFactory = new Configuration().configure().buildSessionFactory(); }catch (Exception e) { e.printStackTrace(); } } public static Session currentSession(){ Session session = sessionFactory.openSession(); return session; } public static void closeSession(Session session){ session.close(); } }
Person.java
package com.hibernate.model; import java.sql.Date; public class Person { private Integer id; private String username; private String password; private Integer age; private Date registerdate; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getRegisterdate() { return registerdate; } public void setRegisterdate(Date sterregisterdatedate) { this.registerdate = sterregisterdatedate; } }
Person对象对应的配置文件,同样放在src目录下。
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.hibernate.model.Person" table="person"> <id name="id" column="id" type="int"> <generator class="increment"></generator><!-- 主键ID的生成方式 --> </id> <property name="username" column="username" type="java.lang.String"></property> <property name="password" column="password" type="java.lang.String"></property> <property name="age" column="age" type="int"></property> <property name="registerdate" column="registerdate" type="date"></property> </class> </hibernate-mapping>
Test.java 测试类
package com.hibernate.util; import java.sql.Date; import java.util.List; import com.hibernate.model.Person; import com.hibernate.persistence.DBPerson; public class Test { public static void main(String[] args) { //实例化一个person Person person = new Person(); person.setId(11); person.setAge(22); person.setPassword("1111"); person.setUsername("hp"); person.setRegisterdate(new Date(new java.util.Date().getTime())); DBPerson.save(person); //保存 //查找 List list = DBPerson.getAll(); for (int i = 0; i < list.size(); i++) { person = (Person) list.get(i); System.err.println(person.getId() + " " + person.getUsername() + " " + person.getPassword() + " " + person.getAge() + " " + person.getRegisterdate()); } } }
DBPerson.java 用于保存或查找person
package com.hibernate.persistence; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import com.hibernate.model.Person; import com.hibernate.util.HibernateUtil; public class DBPerson { //保存person public static void save(Person person) { Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); try { session.save(person); tx.commit(); } catch (Exception e) { System.out.println("新增用户失败"); if (null != tx) { tx.rollback(); } } finally { HibernateUtil.closeSession(session); } } //查找并返回所有person public static List getAll(){ Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); List list = null; try { Query query = session.createQuery(" from Person");//hql语句 list = query.list(); } catch (Exception e) { System.out.println("查询用户失败"); if (null != tx) { tx.rollback(); } } finally { HibernateUtil.closeSession(session); } return list; } public static Person getPersonById(Integer id){ Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); Person person = null; try { person = (Person) session.get(Person.class, id); } catch (Exception e) { System.out.println("查询用户失败"); if (null != tx) { tx.rollback(); } } finally { HibernateUtil.closeSession(session); } return person; } //删除 public static void deletePerson(Person person){ Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); try { session.delete(person); tx.commit(); } catch (Exception e) { System.out.println("删除用户失败"); if (null != tx) { tx.rollback(); } } finally { HibernateUtil.closeSession(session); } } //更新 public static void updatePerson(Person person){ Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); try { session.update(person); tx.commit(); } catch (Exception e) { System.out.println("更新用户失败"); e.printStackTrace(); if (null != tx) { tx.rollback(); } } finally { HibernateUtil.closeSession(session); } } }
最后在数据库中生成的纪录
例2:演示多种数据类型之间匹配。
Customers(客户),有如下属性
create table customers( id bigint not null primary key, name varchar(15) not null, email varchar(128) not null, password varchar(128) not null, phone int, address varchar(255), sex char(1), is_married bit, description text, image blob, birthday date, registered_time timestamp );
Customer.java
package com.hibernate.model; import java.sql.Date; import java.sql.Timestamp; public class Customer { private Long id; private String name; private String email; private String password; private int phone; private String address; private char sex; private boolean married; private String description; private byte[] image; //blob类型一般用数组来表示 private Date birthday; private Timestamp registeredTime; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getPhone() { return phone; } public void setPhone(int phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public boolean isMarried() { return married; } public void setMarried(boolean married) { this.married = married; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public byte[] getImage() { return image; } public void setImage(byte[] image) { this.image = image; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Timestamp getRegisteredTime() { return registeredTime; } public void setRegisteredTime(Timestamp registeredTime) { this.registeredTime = registeredTime; } }
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.hibernate.model.Customer" table="customers"> <id name="id" column="id" type="long"> <generator class="increment"></generator> </id> <property name="name" column="name" type="string" not-null="true"></property> <property name="email" column="email" type="string" not-null="true"></property> <property name="password" column="password" type="string" not-null="true"></property> <property name="phone" column="phone" type="int"></property> <property name="address" column="address" type="string"></property> <property name="sex" column="sex" type="character"></property> <property name="married" column="is_married" type="boolean"></property> <property name="description" column="description" type="text"></property> <property name="image" column="image" type="binary"></property> <property name="birthday" column="birthday" type="date"></property> <property name="registeredTime" column="registered_time" type="timestamp"></property> </class> </hibernate-mapping>
发表评论
-
hibernate(7):hibernate事务
2011-09-17 23:20 641悲观锁是 ... -
hibernate(6):Hibernate的检索策略
2011-09-17 19:49 7331 1 ... -
hibernate(5):域对象在持久化层的三种状态
2011-09-17 18:34 9051 ... -
hibernate(4):hibernate映射关系续
2011-09-17 11:43 1072看完多对一,再来看看一对一的情况: 学生和证件是一对一的关系 ... -
hibernate(3):hibernate映射关系
2011-09-16 00:11 920例:建表脚本 create tabl ... -
hibernate(1):hibernate入门
2011-09-10 12:45 655...
相关推荐
"JavaOne2009-JPA2映射的神秘之旅.pdf" 和 "JavaOne2009-JPA2新特征.pdf" 这两个文档,显然涵盖了JPA2的重要概念和新特性,特别是关于映射和框架的最新发展。以下是这两个主题的主要知识点: 1. **JPA2新特性**: ...
在本文中,我们将深入探讨如何使用Hibernate进行基础的数据库交互,通过一个经典的“HelloWorld”示例来开启我们的Hibernate之旅。 一、Hibernate简介 Hibernate是Java中的一个开源持久化框架,它允许开发者将Java...
《Hibernate学习之旅:SSH框架中的持久化神器》 在IT领域,SSH(Spring、Struts、Hibernate)被誉为经典的Java Web开发三大框架。其中,Hibernate作为数据持久化工具,以其强大的对象关系映射(ORM)能力,极大地...
《Hibernate Search in Action》这本书深入探讨了Hibernate Search这一强大的全文搜索引擎集成框架,它将全文搜索功能无缝地融入到Java持久层框架Hibernate之中。通过利用Lucene库的强大功能,Hibernate Search为...
《深入剖析Hibernate 4.3.11.Final:源码探索之旅》 Hibernate,作为Java领域中的一个著名持久化框架,一直以来都是开发者们的重要工具。本次我们将通过深入研究`hibernate-release-4.3.11.Final.zip`这个压缩包,...
《深入剖析Hibernate 3.2源码》 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的交互。...无论是对新手还是经验丰富的开发者,这都是一次有价值的探索之旅。
1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. Hibernate入门 2.1. 前言 2.2. 第一部分 - 第一个Hibernate程序 2.2.1. 第一个class 2.2.2. 映射文件 2.2.3. ...
开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成 2.3. JCA支持 3. SessionFactory配置 3.1. 可编程配置方式...
《Hibernate初识:深入理解与实践》 Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,让开发者可以专注于业务逻辑,而不是...希望这篇文章能为你的Hibernate学习之旅打下坚实的基础。
1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 3.1. 可编程的配置方式 ...
首先,介绍如何开始Hibernate之旅,包括设置开发环境、引入必要的依赖库。接着,我们将创建第一个可持久化类,这是使用Hibernate的基础,通过定义Java Bean来代表数据库中的表。然后,我们将学习如何编写映射文件,...
- **开始Hibernate之旅**:介绍如何在Tomcat服务器环境中设置和配置Hibernate环境。 - **第一个可持久化类**:讲解如何创建第一个持久化类,以及如何使用Hibernate对其进行持久化处理。 - **映射Cat**:以“猫”类为...
1. **开始Hibernate之旅** Hibernate可以在多种J2EE应用服务器上运行,包括Apache Tomcat。在本教程中,使用PostgreSQL 7.3作为示例数据库,但Hibernate支持其他数据库,只需调整SQL方言配置。 2. **安装Hibernate...
Hibernate是一款强大的Java持久化框架,它为Java开发者提供了一种对象关系映射(ORM)解决方案,使得在Java...在学习过程中,结合实例代码和文档,你将能够掌握这一强大的ORM框架,为你的Java开发之旅添加强大的工具。
SSH(Struts2、Spring、Hibernate)框架是Java Web开发中的经典组合,它们各自负责不同的职责,协同工作以实现高效、灵活的后端应用。在本项目中,SSH框架完全基于注解,使得代码更加简洁,减少了XML配置的繁琐。...
总结,Hibernate 学习之旅从理解其基本原理和配置开始,然后通过实践 CRUD 操作和查询语句,逐渐掌握其精髓。这个资源包提供的实例将是很好的学习材料,通过动手实践,加深对 Hibernate 工作机制的理解,为后续的 ...
**正文** `Hibernate` 是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者...现在,你可以根据提供的`BookHibernate_01`资源开始你的学习之旅,动手实践这些概念,进一步提升你的技能。
开始Hibernate之旅前,你需要在项目中引入Hibernate的JAR包,包括hibernate-core、hibernate-entitymanager等。同时,配置Hibernate的主配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、方言设置等。 3. **...
2. Hibernate的Update操作: 更新数据时,需要获取要修改的对象,然后改变它的属性,再调用Session的update()方法。示例中首先获取了id为103的News对象,然后更改了content和title。但是,如果没有显式设置date,...