ORMapping:对象关系映射
优点 缺点
SQL/JDBC 成熟流行使用DAO模式 代码烦杂,可读性差,维护移植困难
Entity Bean CMP ,未来的EJB3 错误的设计,不可移植序列化,不支持多态的关联查询
JDO 简单透明标准 不够成熟
Apache OJB 性能稳定 文档少
iBATIS 可以控制更多数据库细节 持久层封装不彻底
Hibernate 成熟流行功能强大 不够透明
Hibernate 是流行成熟的O/R Mapping 框架。提供了强大的对象和关系数据库映射以及查询功能。
开发步骤:
开发持久化类设计。
持久化类和关系数据库的映射。
应用的开发。
POJO类:只包含setter 及 getter 方法的类
HBM映射: 描述类和表之间关系
主键生成方式:
assigned :指派 由用户自行管理
设计一个Person类,定义了id uid name password ,并生成getter和setter方法
那么建立person表和Person类的关系映射就是如下
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<!-- HBM根元素 所在的包 --> <!--指定Person类 与person的映射 -->
<class name="zzj.zzj.Person" table="person" catalog="person">
<!-- name表示Person类中的属性名字 -->
<!-- column表示表中字段名字 -->
<!-- 这样就把 类中的 id和表中的id映射上 -->
<!-- type 表示类型 -->
<!-- assigned 主键的生成方式,这里表示由用户自行管理 -->
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="assigned"></generator>
</id>
<!-- property表示 类中和表中其他字段的映射 -->
<!-- name表示 Person类中的属性名称 -->
<!-- column 表中 的字段名称 -->
<!-- type 类型 -->
<!-- 如果表中有非空约束,那么就有not-null -->
<property name="uid" type="java.lang.String">
<column name="uid" length="32" />
</property>
<property name="name" type="java.lang.String">
<column name="name" length="32" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" />
</property>
</class>
</hibernate-mapping>
$------------------创建数据库操作类persond.java----------------------------------$
package zzj.zzj;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
/***
* 具体操作Hibernate的类
* @author Administrator
*增加 删除 修改 按ID查询 模糊查询 查询全部
*/
public class persond {
//Hibernate中,所有的操作都是通过Session完成,但和jsp中的 session 不同
private Session session = null;
//在构造方法之中实例化Session对象
public persond()
{
//找到Hibernate配置
Configuration config = new Configuration().configure();
//从配置中取出SessionFactory
SessionFactory factory = config.buildSessionFactory();
//从SessionFactory中取出一个session
this.session =factory.openSession();
}
//所有的操作都是通过session进行的
//向数据库中增加数据
public void insert(Person p)
{
//开始事务
Transaction tran = this.session.beginTransaction();
//执行语句
this.session.save(p);
//提交事务
tran.commit();
}
//向数据库插入操作
public void update(Person p)
{
//开始事务
Transaction tran = this.session.beginTransaction();
//执行语句
this.session.update(p);
//提交事务
tran.commit();
}
//按ID查询,推荐使用HQL--官方推荐的Hibernate查询语言
public Person queryById(int id)
{
Person p= null;
//使用Hibernate查询语句
String hql = "FROM Person as p WHERE p.id=?";
//通过Query 接口查询
Query q = this.session.createQuery(hql);
q.setInteger(0,id);
List l = q.list();
Iterator iter = l.iterator();
if(iter.hasNext())
{
p = (Person)iter.next();
}
return p;
}
//使用此方法删除数据之前必须查找到数据对象,性能低
//删除数据
public void delete(Person p)
{
//开始事务
Transaction tran = this.session.beginTransaction();
//执行语句
this.session.delete(p);
//提交事务
tran.commit();
}
//HQL中增加了删除指令
public void delete (int id)
{
//开始事务
Transaction tran = this.session.beginTransaction();
String hql = "DELETE Person WHERE id=?";
Query q = this.session.createQuery(hql);
//设置参数
q.setInteger(0, id);
q.executeUpdate();
//提交事务
tran.commit();
}
//查询所有数据
public List queryAll()
{
List l = null;
String hql = "FROM Person as p";
Query q = this.session.createQuery(hql);
l = q.list();
return l;
}
//模糊查询
public List queryBylike(String cond)
{
List l = null;
String hql = "FROM Person as p WHERE p.name like ?";
Query q = this.session.createQuery(hql);
q.setString(0, "%"+cond+"%");
l = q.list();
return l;
}
}
$------创建数据库使用主程序 pess.java------$
package zzj.zzj;
import java.util.Iterator;
import java.util.List;
public class pess {
/**
* @param args
*/
public static void mohuchaxun()
{
persond po = new persond();
List l = po.queryBylike("zzj");
Iterator iter = l.iterator();
while(iter.hasNext())
{
Person p = (Person)iter.next();
System.out.println(p.getName());
}
}
public static void chaxun1()
{
persond po = new persond();
List l = po.queryAll();
Iterator iter = l.iterator();
while(iter.hasNext())
{
Person p = (Person)iter.next();
System.out.println(p.getName());
}
}
public static void shanchu1()
{
persond po = new persond();
po.delete(1);
}
public static void shanchu()
{
persond po = new persond();
Person p = po.queryById(11);
System.out.println(p.getName());
po.delete(p);
}
public static void chaxun()
{
persond po = new persond();
Person p = po.queryById(11);
System.out.println(p.getName());
}
public static void zengjia()
{
//生成pojo类对象
Person p = new Person();
p.setId(11);
p.setName("zzjzzj我是无敌的");
p.setPassword("我无敌无敌");
p.setUid("周jz周");
//实例化 persond对象
persond pd = new persond();
pd.insert(p);
//在插入完成后,必须将事物提交
}
public static void charu()
{ //生成pojo类对象
Person p = new Person();
p.setId(11);
p.setName("zzjzzj我是无敌的");
p.setPassword("我无敌无敌");
p.setUid("周jz周");
//实例化 persond对象
persond pd = new persond();
pd.update(p);
//在插入完成后,必须将事物提交
}
public static void main(String[] args) {
/*
charu();//插入
zengjia();//增加
*/
//chaxun();//查询
//shanchu();//删除
// shanchu1();//用HQL直接删除
//chaxun1();//查询所有
mohuchaxun();//模糊查询
}
}
$----------------------创建pojo类 Person.java------------------------------------$
package zzj.zzj;
//pojo类
public class Person {
private Integer id;
private String uid;
private String name;
private String password;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id
没有合适的资源?快使用搜索试试~ 我知道了~
J2EE复习笔记--java程序员学习与进阶的良师益友
共212个文件
jsp:51个
txt:41个
class:39个
需积分: 3 22 下载量 20 浏览量
2009-06-27
10:02:41
上传
评论
收藏 204KB RAR 举报
温馨提示
基础知识阐述和高级知识进阶,难点解疑,热点分析。 包括jsp基础,servlet,数据库,javabean, structs,mvc设计,spring,jsp进阶,hibernate,ssh项目实战,jsp-dao-mvc进阶等章节,是学习参考不错的资料。
资源推荐
资源详情
资源评论
收起资源包目录
J2EE复习笔记--java程序员学习与进阶的良师益友 (212个子文件)
NoteDAOImpl.class 7KB
NoteDAOImpl.class 4KB
NoteDAOImpl.class 4KB
NoteServlet.class 4KB
NoteServlet.class 3KB
LoginServlet.class 2KB
LoginServlet.class 2KB
LoginServlet.class 2KB
Person.class 2KB
PersonDAOImpl.class 2KB
PersonDAOImpl.class 2KB
PersonDAOImpl.class 2KB
PersonVo.class 2KB
personImpl.class 1KB
personImpl.class 1KB
DateBaseConnection.class 1KB
DateBaseConnection.class 1KB
DataBaseConnection.class 1KB
DataBaseConnection.class 1KB
DataBaseConnection.class 1KB
Note.class 1KB
Note.class 1KB
Note.class 1KB
Person.class 895B
Person.class 895B
PersonVo.class 883B
NoteDAO.class 642B
DAOFactory.class 603B
DAOFactory.class 603B
DAOFactory.class 603B
NoteDAO.class 445B
NoteDAO.class 445B
Daofactory.class 410B
Daofactory.class 410B
PersonDAO.class 210B
PersonDAO.class 210B
PersonDAO.class 210B
person.class 142B
person.class 142B
.classpath 434B
.classpath 434B
.classpath 434B
.classpath 434B
.classpath 434B
.classpath 434B
.classpath 434B
.classpath 340B
NoteDAOImpl.java 7KB
NoteServlet.java 6KB
NoteDAOImpl.java 5KB
NoteDAOImpl.java 5KB
NoteServlet.java 4KB
LoginServlet.java 2KB
LoginServlet.java 2KB
LoginServlet.java 2KB
Person.java 1KB
PersonVo.java 1KB
personImpl.java 1KB
personImpl.java 1KB
PersonDAOImpl.java 1023B
PersonDAOImpl.java 1023B
PersonDAOImpl.java 1023B
DateBaseConnection.java 982B
DateBaseConnection.java 982B
NoteDAO.java 874B
DataBaseConnection.java 688B
DataBaseConnection.java 688B
DataBaseConnection.java 688B
Note.java 656B
Note.java 656B
Note.java 656B
PersonVo.java 603B
NoteDAO.java 516B
NoteDAO.java 516B
Person.java 508B
Person.java 508B
DAOFactory.java 303B
DAOFactory.java 303B
DAOFactory.java 303B
Daofactory.java 259B
Daofactory.java 259B
person.java 232B
person.java 232B
PersonDAO.java 166B
PersonDAO.java 166B
PersonDAO.java 166B
list_notes.jsp 3KB
update.jsp 3KB
split_page.jsp 3KB
list_notes.jsp 3KB
list_notes.jsp 2KB
index_chenggong.jsp 2KB
update_do.jsp 2KB
insert_do.jsp 2KB
update.jsp 2KB
list_notes.jsp 2KB
update.jsp 2KB
update.jsp 2KB
delete_do.jsp 2KB
login_conf.jsp 2KB
共 212 条
- 1
- 2
- 3
资源评论
祥云68
- 粉丝: 14
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功