`

hibernate(2):开始Hibernate之旅

 
阅读更多

本例将使用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必读,JPA2新特征和JPA2映射的神秘之旅。

    "JavaOne2009-JPA2映射的神秘之旅.pdf" 和 "JavaOne2009-JPA2新特征.pdf" 这两个文档,显然涵盖了JPA2的重要概念和新特性,特别是关于映射和框架的最新发展。以下是这两个主题的主要知识点: 1. **JPA2新特性**: ...

    Hibernate之HelloWorld

    在本文中,我们将深入探讨如何使用Hibernate进行基础的数据库交互,通过一个经典的“HelloWorld”示例来开启我们的Hibernate之旅。 一、Hibernate简介 Hibernate是Java中的一个开源持久化框架,它允许开发者将Java...

    hibernate学习资料

    《Hibernate学习之旅:SSH框架中的持久化神器》 在IT领域,SSH(Spring、Struts、Hibernate)被誉为经典的Java Web开发三大框架。其中,Hibernate作为数据持久化工具,以其强大的对象关系映射(ORM)能力,极大地...

    hibernate Search in action

    《Hibernate Search in Action》这本书深入探讨了Hibernate Search这一强大的全文搜索引擎集成框架,它将全文搜索功能无缝地融入到Java持久层框架Hibernate之中。通过利用Lucene库的强大功能,Hibernate Search为...

    hibernate-release-4.3.11.Final.zip

    《深入剖析Hibernate 4.3.11.Final:源码探索之旅》 Hibernate,作为Java领域中的一个著名持久化框架,一直以来都是开发者们的重要工具。本次我们将通过深入研究`hibernate-release-4.3.11.Final.zip`这个压缩包,...

    hibernate-3.2源码包

    《深入剖析Hibernate 3.2源码》 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的交互。...无论是对新手还是经验丰富的开发者,这都是一次有价值的探索之旅。

    Hibernate教程

    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 教程

    开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成 2.3. JCA支持 3. SessionFactory配置 3.1. 可编程配置方式...

    Hibernate beginning

    《Hibernate初识:深入理解与实践》 Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,让开发者可以专注于业务逻辑,而不是...希望这篇文章能为你的Hibernate学习之旅打下坚实的基础。

    最全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中文.doc

    首先,介绍如何开始Hibernate之旅,包括设置开发环境、引入必要的依赖库。接着,我们将创建第一个可持久化类,这是使用Hibernate的基础,通过定义Java Bean来代表数据库中的表。然后,我们将学习如何编写映射文件,...

    Hibernate2.1.2参考手册中文版

    - **开始Hibernate之旅**:介绍如何在Tomcat服务器环境中设置和配置Hibernate环境。 - **第一个可持久化类**:讲解如何创建第一个持久化类,以及如何使用Hibernate对其进行持久化处理。 - **映射Cat**:以“猫”类为...

    hibernate学习.doc

    1. **开始Hibernate之旅** Hibernate可以在多种J2EE应用服务器上运行,包括Apache Tomcat。在本教程中,使用PostgreSQL 7.3作为示例数据库,但Hibernate支持其他数据库,只需调整SQL方言配置。 2. **安装Hibernate...

    hibernate初学者jar包

    Hibernate是一款强大的Java持久化框架,它为Java开发者提供了一种对象关系映射(ORM)解决方案,使得在Java...在学习过程中,结合实例代码和文档,你将能够掌握这一强大的ORM框架,为你的Java开发之旅添加强大的工具。

    hibernate+spring+strust2完全基于注解的框架整合

    SSH(Struts2、Spring、Hibernate)框架是Java Web开发中的经典组合,它们各自负责不同的职责,协同工作以实现高效、灵活的后端应用。在本项目中,SSH框架完全基于注解,使得代码更加简洁,减少了XML配置的繁琐。...

    hibernate初学者适用(资料加实例)

    总结,Hibernate 学习之旅从理解其基本原理和配置开始,然后通过实践 CRUD 操作和查询语句,逐渐掌握其精髓。这个资源包提供的实例将是很好的学习材料,通过动手实践,加深对 Hibernate 工作机制的理解,为后续的 ...

    hibernate 增删改查

    **正文** `Hibernate` 是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者...现在,你可以根据提供的`BookHibernate_01`资源开始你的学习之旅,动手实践这些概念,进一步提升你的技能。

    入门Hibernate

    开始Hibernate之旅前,你需要在项目中引入Hibernate的JAR包,包括hibernate-core、hibernate-entitymanager等。同时,配置Hibernate的主配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、方言设置等。 3. **...

    Hibernate增删改查

    2. Hibernate的Update操作: 更新数据时,需要获取要修改的对象,然后改变它的属性,再调用Session的update()方法。示例中首先获取了id为103的News对象,然后更改了content和title。但是,如果没有显式设置date,...

Global site tag (gtag.js) - Google Analytics