`

Hibernate之第1解之-hibernate_demo_1

阅读更多

准备工作做好了,开始Hibernate:

1:建立包:package:dao、model、service、util包;

2:开始model实体类Student:id,sname生成getter/setter;

package model;

public class Student {
	private int id;
	private String name;

	public int getId() {
		return id;
	}
	private void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
 

3:在Hibernate源码下/project/搜索 *.xml复制以下文件:

hibernate.cfg.xml-->src下;

*.hbm.xml-->model下;

4:配置hibernate.cfg.xml

<session-factory>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/hibnie</property>
		<property name="connection.username">root</property>
		<property name="connection.password">1234</property>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="show_sql">true</property>

		<mapping resource="model/Student.hbm.xml"/>
	</session-factory>
 

5:配置Student.hbm.xml

<hibernate-mapping package="model">
	<class name="Student" table="s" lazy="false">
		<id name="id" type="integer" column="sid">
            <generator class="identity"/>
		</id>
		<property name="name" type="string" column="sname" />
	</class>
</hibernate-mapping>
 

6:加入JUnit4 jar包,加入path;

7:写util.HibernateUtil

package util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	private static final SessionFactory sessionFactory=buildSessionFactory();
	
	/**	init sessionFactory	*/
	private static SessionFactory buildSessionFactory() {
		SessionFactory sessionFactory=null;
		try{
			sessionFactory=new Configuration().configure().buildSessionFactory();
		}catch(Throwable te){
			System.err.println("init sessionFactory Error:"+te);
			te.printStackTrace();
		}
		return sessionFactory;
	} 
	
	/**	get session	*/
	public static Session getSession(){
		Session stion=sessionFactory.openSession();
		return stion;
	}

}
 

8:测试HIbernateUtil

testsrc--:

        @Test
	public void testGetSession() {
		Session stion=HibernateUtil.getSession();
		System.out.println(stion);
	}
 

9:dao层-->StudentDao

package dao;

import java.util.Iterator;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import util.HibernateUtil;
import model.Student;

public class StudentDao {
	/**	insert;	 */
	public void addStudent(Student stu){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		try{
			tx=session.beginTransaction();
			session.save(stu);
			tx.commit();
		}catch(HibernateException he){
			tx.rollback();
			he.printStackTrace();
		}finally{
			session.close();
		}
	}
	/**	select;	 */
	public Student getStudent(int sid){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		Student stu=null;
		try{
			tx=session.beginTransaction();
			stu=(Student)session.load(Student.class,new Integer(sid));
//			stu=(Student)session.get(Student.class,new Integer(sid));
			tx.commit();
		}catch(HibernateException he){
			tx.rollback();
			he.printStackTrace();
		}finally{
			session.close();
		}
		return stu;
	}
	/**	update	 */
	public void updateStudent(String oldName,String newName){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		try{
			tx=session.beginTransaction();
			Query q=session.createQuery("from Student s where s.name= ?");
			q.setParameter(0, oldName);
			Iterator<Student> it=q.list().iterator();
			while(it.hasNext()){
				Student s=it.next();
				s.setName(newName);
				session.update(s);
			}
			tx.commit();
			session.close();
		}catch(HibernateException he){
			tx.rollback();
			he.printStackTrace();
		}
	}
	/**	delete	 */
	public void deleteStudent(String str){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		try {
			tx=session.beginTransaction();
			/*	1.Criteria查询;	*/
			Criteria criter=session.createCriteria(Student.class).add(Restrictions.like("name","%"+str+"%"));
			Iterator<Student> it=criter.list().iterator();
			/*	2.Query查询	
			Query q=session.createQuery("from Student as s where s.name like ?");
			q.setParameter(0, "%"+str+"%");	
			Iterator<Student> it=q.list().iterator();	*/
			/*	3.Native sql查询	表名和表中的列名而不是实体类的类名和属性名了
			SQLQuery sqlq=session.createSQLQuery("SELECT * FROM s WHERE sname like ?").addEntity(Student.class);
			sqlq.setParameter(0, "%"+str+"%");
			Iterator<Student> it=sqlq.list().iterator();	*/
			while(it.hasNext()){
				session.delete(it.next());
			}
			tx.commit();
		} catch (HibernateException he) {
			tx.rollback();
			he.printStackTrace();
		} finally {
			session.close();
		}
	}
}

 10.业务层-->service:StudentManager:

package service;

import dao.StudentDao;
import model.Student;

public class StudentManager {
	StudentDao dao=new StudentDao();
	public void save(Student stu){
		dao.addStudent(stu);
	}
	public Student get(int id){
		return dao.getStudent(id);
	}
	public void update(String oname,String nname){
		dao.updateStudent(oname, nname);
	}
	public void delete(String name){
		dao.deleteStudent(name);
	}
}

 11.测试业务逻辑:StudentManagerTest

package service;

import model.Student;
import org.junit.Before;
import org.junit.Test;

public class StudentManagerTest {
	StudentManager manager;
	@Before
	public void init(){
		manager=new StudentManager();
	}
	@Test public void testSave() {
		Student stu1=new Student();
		stu1.setName("John woo");
		manager.save(stu1);
	}
	@Test public void testGet(){
		Student stu=manager.get(12);
		System.out.println(stu.getName());
	}
	@Test public void testUpdate(){
		manager.update("Mary","Nie");
	}
	@Test public void testDelete(){
		manager.delete("ie");
	}
}

 

一个基本hibernate就完成了,包括基本的CRUD还有3种查询方式。

备注:lib下的jar包:

antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate3.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
junit-4.9b1.jar
mysql6.jar
slf4j-api-1.6.1.jar
slf4j-simple-1.6.1.jar
 
2
3
分享到:
评论

相关推荐

    Hibernate之第2解之-hibernate_demo_1_annotation

    NULL 博文链接:https://niewj.iteye.com/blog/1010112

    demo.zip springboot + hibernate 的第一个项目

    springboot + hibernate 的第一个项目

    hibernate_Demo:这是一个单纯的hibernate示例

    EJB 3 标准的注释包含在 javax.persistence 包,所以我们第一步需要导入这个包。 javax.persistence persistence-api 1.0.2 然后在实体类中添加注释 @Entity @Table(name="EMPLOYEE") public class Employee { @Id @...

    Spring3 MVC Hibernate-JPA Eclipse Demo

    1、本示例只是借花献佛,其实网上SpringMVC+Hibernate-JPA的示例代码一大堆,但是有源代码的demo很少,而且大部分介绍不全面,容易造成学习误区。我也是曾经学习网上示例来完成这个demo。本人是参考...

    Spring3 MVC +HibernateJPA Eclipse Demo

    1、本示例只是借花献佛,其实网上SpringMVC+Hibernate-JPA的示例代码一大堆,但是有源代码的demo很少,而且大部分介绍不全面,容易造成学习误区。我也是曾经学习网上示例来完成这个demo。本人是参考...

    spring-boot-jpa-hibernate-demo:Spring Boot中的JPA + Hibernate + MySQL

    读者可自行将DBConfig中有关Hibernate的相关配置提取到application.properties文件中框架SpringBootSpringMVCSpring data JPAMySQL概述一个前后分离的后端简易demo,利用jpa的注解特性与Hibernate结合,在数据存储的...

    struts2.3.x+spring3.1.x+hibernate3.6 demo

    关键问题有几个,第一个HibernateDaoSupport这个没有了,在使用hibernateTemplate的时候,报错误:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session 很是悲...

    jqGrid demo in JSP Struts2 & Hibernate 源码3/3

    由于当前我的上传权限只有10M,所以分开压缩成三个分包,这只是源码包的第三部分(part3),请同时下载其它两部分,part2 和 part1,只有三个包都下载了,才能解压。提示:源码包和war包不要弄混了,war包用来快速部署...

    Spring-hibernateDemo:用springmvc+hib完成的第一个成功的demo

    Spring-hibernateDemo用springmvc+hib完成的第一个成功的demo

    Shiro+Hibernate4...上一个Demo的修改版

    是上一个项目的第二个版本,待完善角色和权限的配置以及权限过滤器。此项目是一个MyEclipse项目,使用Eclipse导入时需要修改.myetadate文件。详细项目信息请看parent\web\src\main\resources\description文件。大家有...

    hibernate-envers-demo:使用Hibernate Envers,Spring Boot和AngularJS的简短演示

    第一个将对特定业务对象进行更改,第二个将批准或拒绝这些更改。使用的技术选择Spring-boot( )建立一个基于后端REST体系结构和使用AngularJS( )的前端实现的快速工作模型。会消耗这些服务。 Hibernate envers...

    java_hibernate

    学习hibernate的第一课,如此简单的创建一个hibernate框架的小案例

    jqGrid demo in JSP Struts2 & Hibernate 源码2/3

    jqGrid demo in Struts2 & Hibernate源码压缩包第二部分(part2) 这只是源码包的第二部分(part2),请同时下载其它两部分,part3 and part1

    jqGrid demo in JSP Struts2 & Hibernate 新版myeclise for Spring 10.0

    它们在hibernate.cfg.xml文件第15,16行. &lt;property name="connection.username"&gt;root &lt;property name="connection.password"&gt;root struts配置文件和hibernate的配置文件都在src目录下 4.这就是jqGrid最简单的演示,...

    Java_HibernateDemoDay1

    第一天:Hibernate 的入门(Hibernate 的环境搭建、Hibernate 的API、Hibernate 的 CRUD) 第二天:Hibernate 的一级缓存、其他的 API 第三天:Hibernate 的一对多配置、Hibernate 的多对多的配置 第四天:Hibernate...

    jqGrid demo in JSP Struts2 & Hibernate 源码1/3

    这只是源码包的第一部分(part1),请同时下载其它两部分,part3 and part2 下载三部分后请用winrar解压.

    Demo-Java-RestService

    Demo-Java-RestService 这是我的历史项目之一,现在不在维护中,仅供参考,并演示我的经验。 本项目由 Java + Spring + Hibernate 构建。 它向前端公开 RESTful API。 实施要点: 基于 spring-mvc 的控制器。 验证器...

    spring五种事务配置demo

    第1种方式:每个Bean都有一个代理 详见spring-core-transaction-1.xml 第2种方式:所有bean公用一个代理 详见spring-core-transaction-2.xml 第3种方式:使用拦截器 详见spring-core-transaction-3.xml ...

Global site tag (gtag.js) - Google Analytics