Java数据库访问之持久层框架:Hibernate基础

来源:互联网 发布:淘宝出售假冒违规防止 编辑:程序博客网 时间:2024/04/30 09:07

使用Hibernate框架须添加相关jar包,maven依赖配置如下

<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>3.6.0.Final</version></dependency>

在引入Hibernate依赖后,启动项目时会默认加载hibernate.cfg.xml文件,该xml文件主要用于配置数据库设置及O-R映射关系

<?xml version='1.0' encoding='UTF-8'?>  <!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="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><!--数据库URL --><property name="connection.url">jdbc:oracle:thin:@localhost:orcl</property><!--数据库用户 --><property name="connection.username">hlbert</property><!--数据库密码 --><property name="connection.password">hlbert</property><!--每个数据库对应的方言匹配其平台特性 --><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><!--是否将运行产生的sql语句输出到日志 --><property name="hibernate.show_sql">true</property><mapping resource="hbm/user.hbm.xml" /></session-factory></hibernate-configuration>
O-R映射文件配置如下

<?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"><hibernate-mapping package="orz.hlbert.hibernate.entity"><class name="User" table="T_USER"><id name="userId" column="fuserid"><generator class="uuid"/></id><property name="username" column="fusername" /><property name="fstatus"  /><property name="fstatusLabel" formula="(SELECT DIC.FNAME FROM T_DICTIONARY DIC WHERE DIC.FCODE=fstatus AND DIC.FPARENTDMCODE='Account_Status')" /><list name="rights" table="USER_RIGHT"><!-- 外键 --><key column="username"  not-null="true" /><!-- 集合的索引列 --><list-index column="order_" /><!-- 映射集合元素的数据列 --><element type="string" column="right_name" /></list></class></hibernate-mapping>
POJO没什么特殊要求,普通的JavaBean即可

package orz.hlbert.hibernate.entity;import java.io.Serializable;import java.util.ArrayList;import java.util.List;@SuppressWarnings("serial")public class User implements Serializable {private String userId;private String username;private Integer fstatus;private String fstatusLabel;private List<String> rights=new ArrayList<String>();}
示例代码中省略了Getter、Setter,无需赘言。基本的持久化功能测试如下:

package orz.hlbert.hibernate.entity;import java.util.ArrayList;import java.util.List;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class UserTest {public static void main(String[] args) {Configuration conf=new Configuration().configure();SessionFactory sf=conf.buildSessionFactory();Session sess=sf.openSession();Transaction tx=sess.beginTransaction();//1、新增User记录//User user=new User();//user.setUsername("hlbert");//user.setFstatus(1);//sess.save(user);//2、查询,测试hbm文件formula元素//User user=(User)sess.get(User.class, "4028da284758fd06014758fd07360000");//System.out.println(user.getFstatusLabel());//3、从表关联User user=new User();user.setUsername("testList");user.setFstatus(1);List<String> rights=new ArrayList<String>();rights.add("MAINTAIN");rights.add("RETRIEVE");user.setRights(rights);sess.save(user);rights.add("DELETE");tx.commit();sess.close();sf.close();}}


0 0