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

技术迷途 专栏收录该内容
3 篇文章 0 订阅

使用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();
}
}


  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

sai13516807939

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值