hibernate单表操作

本文介绍Hibernate中主键的生成方式,包括手工赋值和数据库自动生成,并通过示例展示不同设置下主键的变化。同时,文章还涵盖了基本类型、对象类型等属性映射方法,以及使用Hibernate进行增删改查(CRUD)的基本操作。
摘要由CSDN通过智能技术生成

1、单一主键

assigned 由java应用程序负责生成(手工赋值)。

native 由底层数据库自动生成标示符,如果是Mysql就是increament,如果是Oracle就是sequence,等等。

在这里我们尝试使用第一种但是赋值的时候不添标示属性值

public void testSaveUser()
	{
		//生成用户对象
		//User user=new User(1,"txr","123");
		User user =new User();
		user.setPassword("123");
		user.setUsername("txr");
		session.save(user);//保存对象
	}
发现代码居然通过了,但是查看数据库发现ID是0,这是由于id是int类型默认值为0并不是hibernate为它自动添加了主键值。但如果你再添加一次id还是没有赋值为0那么就会报主键冲突的错误。而如果把User.hbm.xml的主键属性自动生成改为native则测试会通过因为主键自动生成。

 <id name="id" type="int">
            <column name="ID" />
            <!-- <generator class="assigned" /> -->
            <generator class="native" />
        </id>


2、基本类型



当你想修改属性类型为某种映射类型时只需要修改对应的属性映射值即可,如:
 <!-- <property name="birthday" type="java.util.Date"> -->
        <property name="birthday" type="date">
            <column name="BIRTHDAY" />
        </property>


3、对象类型


注意:Mysql不支持标准SQL的CLOB类型,在Mysql中,用TEXT,MEDIUMTEXT及LONGTEXT类型来表示长度超过255的长文本数据。

4、组件属性

组件属性是指:实体类中的某个属性属于用户自定义的类的对象。

5、单表操作CRUD实例

save
update
delete
get/load(查询单个记录)

get与load的区别:
在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句,返回持久化对象。

load方法会在调用后返回一个代理对象。
该代理对象只保存了实体对象的id,直到使用对象的非主键属性时才会发出sql语句。

查询数据库不存在的数据时,get方法返回null,load方法抛出异常org.hibernate.ObjectNotFoundException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值