`
零度弥合
  • 浏览: 20663 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

J2EE之路(五)hibernate基础

 
阅读更多



在30岁生日的时候,过去追不回的光阴,我依然很菜的技术。

不去想那么多了,从头开始好好学hibernate

我写这个博客只是想督促自己学习,挑剔的看官可以绕道了。

这是我看传智播客某讲师教学教程的笔记

 

首先是一个极其简单的hibernate的例子,算是hello word吧,从这里开始!!

一:包结构如下


二:要导入的包(三组)

以下是解压hibernate-3.2.5.ga.zip之后的包目录



 
 把hibernate3.jar和lib文件夹下的所有jar包导入到工程内,当然还不要忘了jdbc包

 

User.java

package hibernate.bean;

import java.util.Date;

public class User {
	private int id;
	private String name;
	private Date birthday;
	/**
	 * @return the id
	 */
	public int getId() {
		return id;
	}
	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return the birthday
	 */
	public Date getBirthday() {
		return birthday;
	}
	/**
	 * @param birthday the birthday to set
	 */
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
}

User.hbm.xml

<?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 
	package="hibernate.bean">

	<class name="User">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<property name="birthday"/>	
	</class>
	
</hibernate-mapping>

 hibernate.cfg.xml 

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///test</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password"></property>
		<property name="hbm2ddl.auto">create</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
		<mapping resource="hibernate/bean/User.hbm.xml"/>

	</session-factory>
</hibernate-configuration>

 Base.java

package hibernate;

import java.util.Date;

import hibernate.bean.User;

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

public class Base {

	
	public static void main(String[] args) {
		Configuration cfg = new Configuration();
		cfg.configure();
		SessionFactory sf = cfg.buildSessionFactory();
		
		Session s = sf.openSession();
		Transaction t = s.beginTransaction();
		User user = new User();
		user.setName("test201");
		user.setBirthday(new Date());
		
		s.save(user);
		t.commit();
		s.close();
	}

}

 

java类(实体类) 必须是默认的无参数构造方法

尽量有一个id,去对应数据库的主键,否则hibernate很多功能实现不了

最关键的事映射文件这个文件把对象和数据库映射起来

Session和HttpSession是一点关系都没有的

 

Session接口及get-load-persist方法

Session是hibernate中一个非常核心的借口,完成增删改查等操作

clear是用来清缓存的

close用来关闭连接

delete删除一个对象

save保存一个对象

get从数据库中根据主键拿一条记录

 

static User getUser(int id){
		Session s = null;
		try{
			s = HibernateUtil.getSession();
			User user = (User)s.get(User.class,id);
			return user;
		}finally{
			if(s!=null)
				s.close();
		}
	}

User user = (User)s.get(User.class,id); 

传给hibernate实体对象,它就知道在数据库中对应哪张表,好厉害。

 load()方法就是所谓软加载,不会立即执行SQL而是等第一次用这个对象的时候才去执行sql

merge()方法就是更新

persist()方法也是保存区别是persist方法没开启事物的话,根本不会插入,而save方法没开启事物的话是先插入再回滚。

update顾名思义是更新

lock查询一条数据,并且把这条数据加锁不允许别人修改

saveOrUpdate()方法:让hibernate自己判断是保存还是更新,看id有没有值。与merge的区别是,saveOrUpdate之后对象会变成持久的,而merge之后对象是托管的。

对象的三种状态:

瞬时(transient):数据库中没有数据与之对应,超过作用域会被垃圾回收器回收,一般是new出来的并且与session没有关联的对象

持久(persistent):数据库中有数据与其相对应,当前与session有关联,并且相关联的session没有关闭,事物没有提交持久事物状态发生改变,在提交事物时会影响到数据库(hibernate能检测到)

脱管(detached):数据库中有数据与之对应,但当前没有session与之关联:托管对象发生改变hibernate不能检测到。



 

  • 大小: 10.5 KB
  • 大小: 20.2 KB
  • 大小: 27.4 KB
分享到:
评论

相关推荐

    开发者突击·Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)源码

    《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》详细介绍了Java Web软件架构中的各种开发技术。主要内容包括:以MySQL为数据库、Tomcat为Web服务器、Eclipse为开发工具、CVS为版本控制工具...

    J2EE系列讲座之Hibernate.lesson1.rar

    【描述】"J2EE系列讲座之Hibernate.lesson1.rar" 暗示这是一个教学课程或教程的第一部分,专注于介绍Hibernate的基础知识和核心概念。在这个压缩包中,可能包含了课件、源代码示例、讲解视频或者PDF文档等,帮助初学...

    J2EE-Struts-Hibernate

    **J2EE-Struts-Hibernate:企业级Java开发的核心技术** J2EE(Java 2 Platform, Enterprise Edition)是一个由Sun Microsystems(现已被Oracle收购)开发的企业级应用平台,用于构建分布式、多层的Java应用程序。它...

    精通J2EE—Eclipse Struts Hibernate Spring 整合应用案例源代码1

    《精通J2EE—Eclipse Struts Hibernate Spring 整合应用案例源代码1》这个压缩包文件主要包含了一个基于J2EE平台的、利用Eclipse开发工具,整合Struts、Hibernate和Spring框架的综合应用案例的源代码。这些源代码是...

    精通J2EE—Eclipse Struts Hibernate Spring 整合应用案例源代码

    【标题】"精通J2EE—Eclipse Struts Hibernate Spring 整合应用案例源代码" 涵盖了Java企业级开发中的四个重要组件:Eclipse(开发环境)、Struts(MVC框架)、Hibernate(ORM框架)和Spring(全面的应用框架)。...

    在线商城(j2EE,struts,hibernate)

    在线商城(j2EE, Struts, Hibernate)是一个典型的Java企业级应用项目,旨在提供一个完整的电商解决方案。这个项目采用的技术栈是Java Enterprise Edition (j2EE),它包括了Struts作为MVC(Model-View-Controller)...

    j2ee:Struts2-Hibernate-Spring

    在JavaEE(以前称为J2EE)领域,SSH框架的组合被广泛用于构建高效、可维护的企业级Web应用程序。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的开源Web应用框架,它主要用于处理用户界面的交互...

    J2EE.rar_hibernate_j2ee chm_spring_struts spring_struts spring i

    《J2EE.rar》是一个包含丰富Java企业级开发知识的压缩包,主要涵盖了连接池、Eclipse集成开发环境、Struts、Spring、Hibernate、iBatis、XML以及LOG4J等多个核心技术和工具。这些技术是构建高效、稳定、可扩展的企业...

    J2EE培训课件 Hibernate JSF CSS

    【J2EE培训课件 Hibernate JSF CSS】是针对企业级Java开发的全面教程,涵盖了三个核心的技术领域:JavaServer Faces (JSF),Hibernate对象关系映射(ORM)框架,以及层叠样式表(CSS)。这三大技术在现代Web应用程序...

    开发者突击:Java Web主流框架整合开发:J2EE+Struts+Hibernate+Spring 源代码

    《开发者突击:Java Web主流框架整合开发:J2EE+Struts+Hibernate+Spring 源代码》这个项目是为Java Web开发者提供的一种实践指南,它涵盖了四个关键的技术栈:J2EE(Java 2 Platform, Enterprise Edition)、Struts、...

    j2ee框架Struts2HibernateSpring考试复习题库.pdf

    Struts2、Hibernate和Spring是Java企业级应用开发中广泛使用的三大开源框架,它们共同构建了J2EE应用程序的基础架构。这些框架各自有着特定的功能和优势,协同工作时能极大地提高开发效率和软件质量。 **Struts2**...

    J2EE-Spring-Stucts-Hibernate架构-经典-435页.pdf

    《J2EE-Spring-Stucts-Hibernate架构-经典》是一门深度剖析J2EE平台技术的课程,总共435页,旨在为学习者提供一个清晰、全面的J2EE技术框架理解,并通过实际操作训练提升其在J2EE Web应用开发中的编程能力。...

    myeclipse学习j2ee struts hibernate

    【标题】"myeclipse学习j2ee struts hibernate" 涉及到的是一个经典的Java企业级应用开发框架组合,主要包括MyEclipse作为开发工具,以及J2EE(Java 2 Platform, Enterprise Edition)作为后端开发平台,Struts作为...

    6j2ee Struts+Hibernate体验.rar

    标题中的“6j2ee Struts+Hibernate体验”暗示了这是一个关于Java企业级开发的教程或案例,重点在于Struts和Hibernate两个框架的整合应用。Struts是Java Web开发中的一个MVC(Model-View-Controller)框架,主要用于...

    J2EE学习资料,java基础,spring,hibernate,struts等资料

    这个压缩包包含了J2EE学习过程中的一些关键技术和框架的资料,包括Java基础知识、Spring、Hibernate和Struts。下面将详细阐述这些知识点。 1. **Java基础**:Java是所有J2EE技术的基础,它是一种面向对象的编程语言...

    java web所有api(j2ee struts2 hibernate spring)

    这些技术通常结合使用,例如,Spring可以作为基础框架,Struts2处理前端请求,Hibernate管理数据持久化,而J2EE提供了运行环境和一些基础服务。这种组合使得开发者能够快速构建复杂、健壮的Web应用程序,同时保持...

Global site tag (gtag.js) - Google Analytics