分享
 
 
 

简单的hibernate数据库插入例子

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

第五步:建立你的第一个可持久化的类。

Hibernate 让普通的Java 对象(Plain Old Java Objects ,就是POJOs,有时候也称作Plain

Ordinary Java Objects)变成持久化类。一个POJO 很像JavaBean,属性通过getter 和setter

方法访问,对外隐藏了内部实现的细节。

package net.sf.hibernate.examples.quickstart;

public class Cat {

private String id;

private String name;

private char sex;

private float weight;

public Cat() {

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public char getSex() {

return sex;

}

public void setSex(char sex) {

this.sex = sex;

}

public float getWeight() {

return weight;

}

public void setWeight(float weight) {

this.weight = weight;

}

}

第六步:映射Cat

Cat.hbm.xml 映射文件包含了对象/关系映射所需的元数据。

元数据包含了持久化类的声明和把它与其属性映射到数据库表的信息(属性作为值或者是指向

其他实体的关联)。

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping

PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>

<class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT">

<id name="id" type="string" unsaved-value="null" >

<column name="CAT_ID" sql-type="char(32)"/>

<generator class="uuid.hex"/>

</id>

<property name="name">

<column name="NAME" sql-type="varchar(16)"/>

</property>

<property name="sex"/>

<property name="weight"/>

</class>

</hibernate-mapping>

每个持久化类都需要一个标识属性(实际上,只是哪些代表一手对象的类,而不是代表值对象

的类,后者会被映射称为一手对象中的一个组件)。这个属性用来区分持久化对象:如果

catA.getId().equals(catB.getId())结果是true 的话,两只猫就是相同的。这个概念称为

数据库标识。Hiernate 附带了几种不同的标识符生成器,用于不同的场合(包括数据库本地的

顺序(sequence)生成器和hi/lo 高低位标识模式)。我们在这里使用UUID 生成器,并指定CAT

表的CAT_ID 字段(作为表的主键)存放生成的标识值

第七步:在数据库中建立cat表:

运行下面的SQL:

create table CAT(cat_id character(32) not null, name varchar(32), weight real,sex character(1),constraint pk_CAT primary key (cat_id));

第八步:编写测试页面:

<%@ page import="net.sf.hibernate.*"%>

<%@ page import="net.sf.hibernate.cfg.*"%>

<%@ page import="net.sf.hibernate.examples.quickstart.*"%>

<%

SessionFactory sessionFactory =new Configuration().configure().buildSessionFactory();

Session sess = sessionFactory.openSession();

Transaction tx= sess.beginTransaction();

Cat princess = new Cat();

princess.setName("Princess");

princess.setSex('F');

princess.setWeight(7.4f);

sess.save(princess);

tx.commit();

HibernateUtil.closeSession();

out.println("Cat set OK!");

%>

访问一下这个页面看看吧,在看看你的数据库是不是多了一条数据。

现在略微解释一下这段代码:

1、SessionFactory 负责一个数据库,也只对应一个XML 配置文件(hibernate.cfg.xml)。

2、Session 不是线程安全的,代表与数据库之间的一次操作。Session 通过SessionFactory 打

开,在所有的工作完成后,需要关闭:HibernateUtil.closeSession();

3、在Session 中,每个数据库操作都是在一个事务(transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。我们使用Hibernate 的Transaction API 来从底层的事务策略中(本例中是JDBC 事务)脱身。这样,如果需要把我们的程序部署到一个由容器管理事务的环境中去(使用JTA),我们就不需要更改源代码。请注意,我们上面的例子没有处理任何异常。

好了,访问以下看看吧。http://localhost/cat/cat.jsp

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有