tbl_user 是一张表。User是它一个po,NormalUser也是它的一个po,NormalUser继承于User,那么将User和NormalUser持久到数据库的tbl_user中,tbl_user是怎么区分的呢?tbl_user中有一个字段type,它是来区分的。
来看他们的映射文件:
<class name="com.apidoc.app.user.model.User"
table="tbl_user"
discriminator-value="2">
<id name="id" column="id" ...
1. get和load区别
load加载方法:
Users user = (Users)session.load(Users.class, new Integer(1));
get加载方法:
Users user = (Users)session.get(Users.class, new Integer(1));
以上面代码为例:
区别一:如果没有id为1的Users对象,那么,如果通过get方法加载,则返回的是一个null,如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hi ...
1.key是指外键
比如:
<hibernate-mapping>
<class name="com.domain.Classes" table="classes" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="name ...
hibernate 关系映射 one-to-one主要有三种实现方式
1.通过外键方式实现
以学生和电脑为例(Student-Computer)
建表sql语句:
CREATE DATABASE `onetoone`
CHARACTER SET 'utf8';
USE `onetoone`;
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY K ...
Hibernate中的集合
Hibernate中的集合分为四类:
1.bag类:元素无序,可重复
2.set类:元素无序,不可重复
3.list类:元素有序,可重复
4.array类:数组
5.map类:映射关系
除bag类集合外,其它集合都可以在java api中找到对应的接口类,bag可以认为对应java中的List
Hibernate中将集合分为2类:
一是值集合,集合中存储的都是基本数据类型,包括String类型,及其它可识别的数据库类型
二是实体集合,集合中存储已经映射了的实体对象,反应对象间的关系。
以班级和学生为例:
建表sql语句:
CREATE DATABASE ` ...
以以个普通Users表为例:
建表语句:
CREATE DATABASE `interceptor`
CHARACTER SET 'utf8';
USE `interceptor`;
DROP TABLE IF EXISTS `users`;
create table users(
id int auto_increment primary key,
name varchar(10) not null,
passwd varchar(10) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
User.java: ...
hibernate:many-to-many
以学生和老师为例
建表语句:
CREATE DATABASE `manytomany`
CHARACTER SET 'utf8';
USE `manytomany`;
DROP TABLE IF EXISTS `student`;
create table student(
sid int auto_increment primary key,
name varchar(10) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS ` ...
hibernate里的一对多one-to-many(以学生和班级为例子)
1.双向关联情况下
Classes.java:
package com.domain;
import java.util.HashSet;
import java.util.Set;
public class Classes implements java.io.Serializable {
private Integer id;
private String name;
private Set students = new HashSet(0);
public ...
1.hibernate中java对象的三种状态,三种状态都是对缓存而言的。
1)临时状态
New,delete()
不在session的缓存中,数据库中无对应的数据。
2)持久化状态
Save() 临时->持久
load(),get() 返回持久
update(),saveOrUpdate(),lock() 游离->持久
在session的缓存中,数据库中有对应的数据。
3)游离状态
Clear(),Close() 全部 持久->游离
Evict() 一个 持久->游离
不在session的缓存中,数据库中可能存在对应的数据
2.Session清理缓存的 ...
mysql数据库的一个表里的字段logins是text类型的。
hibernate对改字段的映射为:
<property name="logins" column="logins" type="text"/>
实体类:
public class User{
private String logins;
}
程序里取出该实体对象
User user = (User)getHibernateTemplate().load(entityClass, id)
System.out.println(user.getLogins());
打印出的值是类似这样的byte类型的
[B ...
java 代码
package com.test;
import java.util.HashSet;
import java.util.Set;
import com.test.domain.Student;
import com.test.domain.Teacher; ...
在企业应用开发中,经常用到批量插入的功能。对于Hibernate,如果使用方法不当,性能将大打折扣,令人难以忍受。这里介绍一种批量插入的方法,代码如下:
java 代码
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; ...
- 浏览: 90766 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
我的相册
bbbb
共 3 张
共 3 张
最近加入圈子
最新评论
-
hibernate知识小结
谢谢!!正好delete那个地方没弄懂!以为delete之后还是持久态!!现在基 ...
-- by 410228573 -
hibernate------HQL总结
谢谢,学习了!
-- by gdjbj2008 -
Extjs2.0---继承
Ext.extend(SubClass,BaseClass,{ ...
-- by yunhaifeiwu -
修改Eclipse注释里的${Da ...
找到eclipse.ini 里面有-Duser.language=en 改为-D ...
-- by duooluu -
sqlserver2005获取连接失 ...
...
-- by gordanmao






评论排行榜