`

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

    【标题】"Hibernate之第2解之-hibernate_demo_1_annotation"主要涵盖了使用Hibernate框架进行对象关系映射(ORM)的实践,特别是基于注解的方式。在这个教程中,我们将深入探讨如何利用Java注解来配置Hibernate实体...

    hibernateDemo.rar

    在本项目中,"hibernateDemo.rar" 是一个压缩包,包含了一个使用Spring Boot、JPA、Hibernate和Redis构建的示例应用。这个项目旨在展示如何整合这些技术来实现高效的数据存储和缓存管理。以下是对每个组件的详细解释...

    hibernateDemo

    【hibernateDemo】是一个关于Hibernate框架学习的项目,它主要涵盖了初学者在接触和理解Hibernate时会遇到的各种基础知识和实战技巧。Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作...

    hibernate说明及demo的例子

    在Hibernate中,每个数据库表都对应一个Java类,我们称之为实体类。实体类需要使用`@Entity`注解标识,并通过`@Table`注解指定对应的数据库表。字段则通过`@Id`(主键)、`@Column`等注解映射到表的列。 例如,一个...

    HibernateDemo

    【标题】"HibernateDemo"是一个基础的Hibernate项目,旨在为初学者提供学习Hibernate框架的起点。Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,消除了传统JDBC...

    HibernateDemo HibernateDemo

    Hibernate 提供了两级缓存,第一级缓存是Session级别的,每个Session有自己的缓存;第二级缓存是SessionFactory级别的,可以跨Session共享数据。此外,还可以集成第三方缓存服务如Ehcache、Infinispan等。 **6. ...

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

    在本项目中,“demo.zip”是一个包含Spring Boot和Hibernate集成应用的压缩文件。Spring Boot是Spring框架的一个子项目,旨在简化新Spring应用的初始搭建以及开发过程。它通过内嵌Servlet容器(如Tomcat或Jetty)...

    hibernate-demo01-start.zip

    8. **缓存机制**:介绍第一级缓存和第二级缓存,以及如何利用它们提高应用性能。 9. **实体状态管理**:解释持久化对象的四种状态(瞬时、托管、持久和脱管),以及如何在不同状态之间转换。 10. **集成测试**:...

    Spring Hibernate Demo

    在“SpringMVC4和Hibernate4集成demo”中,我们将探讨如何将这两个框架整合在一起,以构建一个高效、灵活的Java Web应用。 首先,SpringMVC 是 Spring 框架的一部分,专门用于处理 Web 请求。它提供了一个模型-视图...

    android hibernate demo例子

    在这个"android hibernate demo例子"中,开发者可能使用了一个特殊的方法或者第三方库来使Hibernate在Android上运行。 这个"OrmDemo"项目包含以下关键组件: 1. **实体类(Entity Classes)**:这些是与数据库表...

    hibernate的demo

    Hibernate提供了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的),可以提高数据访问性能。可以通过配置启用和配置缓存插件。 总结,这个"hibernate的demo"涵盖了Hibernate的基本用法,包括配置、...

    Hibernate5 + Mysql实现Demo源码

    **Hibernate5 + MySQL实现Demo源码详解** 在Java开发中,ORM(对象关系映射)框架使得数据库操作变得更加便捷,而Hibernate作为其中的佼佼者,深受开发者喜爱。本Demo基于Hibernate5,结合MySQL数据库,提供了完整...

    一个简单的增删查改demo(jsp,hibernate,struts2)

    【标题】"一个简单的增删查改demo(jsp,hibernate,struts2)"提供了基于Java Web技术栈的数据库操作示例,主要涉及了三个核心组件:JSP(JavaServer Pages)、Hibernate(对象关系映射框架)和Struts2(MVC框架)...

    HibernateDemo.zip

    8. **第一级缓存与第二级缓存**:Hibernate提供了一级缓存(Session级别)和二级缓存(SessionFactory级别)机制,提高数据读取效率。 9. **懒加载(Lazy Loading)**:Hibernate支持延迟加载,只在真正需要时加载...

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

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

    hibernate第一个例子

    【hibernate第一个例子】 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要...

    demo.rar_DEMO_java ssh demo_ssh_ssh登录注册_文件管理

    在这个名为“demo.rar”的压缩包文件中,我们找到了一个基于Java技术实现的SSH(Spring、Struts2、Hibernate)框架的示例应用,该应用专注于用户登录注册以及文件管理功能。这个DEMO是一个办公自动化系统的简化版本...

    spring4搭配hibernate5和mysql的项目Demo

    总结,这个"spring4搭配hibernate5和mysql的项目Demo"提供了一个完整的Web应用开发实例,展示了如何利用现代Java技术栈构建高效、可维护的数据库驱动的应用程序。对于初学者来说,这是一个很好的学习资源,可以帮助...

Global site tag (gtag.js) - Google Analytics