服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

hibernate实践


  hiberante是对数据库持久层访问的一种机制,hibernate的应用可以使程序员将重点放到业务逻辑的实现上。hibernate的原理是将数据库结构封装,使程序员可以像使用普通对象一样调用数据库的相关接口,从实现数据库的相关操作。
下面就说一个例子,环境j2sdk1.4.2_04,tomcat4.1.27,eclipse3.0,hibernate2.1
数据库的结果如下:

create table users (
logonid varchar(255) not null,
emailaddress varchar(255),
lastlogon date,
password varchar(255),
name varchar(255),
primary key (logonid)
);

create table address2 (
id varchar(255) not null,
city varchar(255),
state varchar(255),
zip varchar(255),
primary key (id)
);
create table contacts (
id bigint not null,
emailaddress varchar(255),
name varchar(255),
user_id varchar(255),
primary key (id)
);
alter table contacts add constraint fke207c4735a7381ef foreign key (user_id) references users;
create index ixe207c4735a7381ef on contacts (user_id);

eclipse安装好hibernate插件后,许多比较繁琐,容易出错的配置文件,eclipse都可以帮您很好的自动生成,您的主要任务就是实现dao,也就是eclipse针对每个表生成的数据访问对象。比如本例的baseaddress2dao,contactsdao,usersdao,你可以修改这三个对象实现对contacts,users,address2的相关操作。该例子的结构如下:


其中address2,contacts,users相当于实体bean,实现对数据表的映射。由于表users和contacts存在one-to-many关系,所以在users.java的实现中将contacts也作为一个对象属性。
private java.util.set _contactsset;
/**
* return the value associated with the column: contactsset
*/
public java.util.set getcontactsset () {
return this._contactsset;
}

/**
* set the value related to the column: contactsset
* @param _contactsset the contactsset value
*/
public void setcontactsset (java.util.set _contactsset) {
this._contactsset = _contactsset;
}

public void addtocontactsset (object obj) {
if (null == this._contactsset) this._contactsset = new java.util.hashset();
this._contactsset.add(obj);
}
一般情况下,hibernate实现数据库的连接有两种方式,一种是借助web服务器的连接池,一种是自己配置连接参数文件。这里只介绍第二种方式:
<hibernate-configuration>
<session-factory>
<!-- local connection properties -->
<!--数据库路径-->
<property name="hibernate.connection.url">
jdbc:jtds:sqlserver://192.198.64.168:1433;databasename=test;selectmethod=cursor
</property>
<!--连接驱动-->
<property name="hibernate.connection.driver_class">
net.sourceforge.jtds.jdbc.driver
</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">sasa</property>
<!-- property name="hibernate.connection.pool_size"></property -->
<!-- 数据库方言 -->
<property name="dialect">
net.sf.hibernate.dialect.sqlserverdialect
</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.use_outer_join">true</property>
<!-- mapping 文件-->
<mapping resource="com/head/multi/contacts.hbm" />
<mapping resource="com/head/multi/users.hbm" />
<mapping resource="com/head/multi/address2.hbm" />
</session-factory>
</hibernate-configuration>

扫描关注微信公众号