- 浏览: 102792 次
- 性别:
- 来自: 上海
最新评论
-
baeiou:
window.addEventListener("o ...
html5本地存储和文件上传 -
masuweng:
很适用,var a = "woai";va ...
js-----比较运算符 -
落叶留步:
3.Detached 内存有,缓存没有,数据库有(但是和 ...
028_CoreAPI_对象三种状态
文章列表
saveOrUpdate()
代码案例:
public void TestsaveORUpdate(){
Teacher t = new Teacher();
t.setName("zhuhw7");
t.setYourWifeName("yourWifeName");
Session session = sf.getCurrentSession();
session.beginTransaction();
session.saveOrUpdate(t);
session.getTransaction().commit();
...
1.什么时候用update
1.可以更新一个detached对象,使其更新数据库,变为persistent
代码案例:
@Test
public void TestUpdate1(){
Session session = sf.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.get(Teacher.class, 2);
session.getTransaction().commit();
/*System.out.println("-----detach ...
028_CoreAPI_对象三种状态
星期一, 一月 04, 2016 15:07
上节课问题:
opensession 和getcurrentsession这两种分式不能混用。
两种session拿到的不是同一个。
session是一个接口,拿到的具体的实现类不是一个。
session接口
查下hibernate api文档
在哪里
不在distribution
hibernate官网上找,hibernate api
扒网站
http://blog.sina.com.cn/s/blog ...
027_CoreAPI_JTA简介
直接使用
连接
setauto (false)commit
事务使用一个connection是管理不了的。
1.分布式事务
比如:
处理订单
order----> orderManage------>DB(产品信息)
...
1.Configuration
a)AnnotationConfiguration
b)进行配置信息的管理
c)用来产生SessionFactory()
d)
sf = new AnnotationConfiguration().configure().buildSessionFactory();
.configure()去找hibernate.cfg.xml配置文件(进行数据库连接和产生连接池)
如果改变hibernate.cfg.xml名字,则在src下放sf = new AnnotationConfiguration().configure(“h ...
026_CoreAPI_Configuration_SessionFactory_GetCurrentSession_OpenSession 27:58
027_CoreAPI_JTA简介 10:24
028_CoreAPI_对象三种状态 25:16
029_CoreAPI_Delete 06:19
030_CoreAPI_Get_Load 12:21
031_CoreAPI_Get_Load_2 06:41
032_CoreAPI_Update 32:14
033_CoreAPI_saveOrUpdate_Clear_Flush 16:39
034_CoreAPI_S ...
星期日, 一月 03, 2016 17:20:10
文档
\zhuhw\hibernate\jar\hibernate-annotations-3.4.0.GA\doc\reference\zh_cn\html_single
2.2.. 映射主键属性
下面是定义组合主键的几种语法:
1.将组件类注解为@Embeddable,并将组件的属性注解为@Id ok
2.将组件的属性注解为@EmbeddedId ok
3.将类注解为@IdClass,并将该实体中所有属于主键的属性都注解为@Id
对于Teacher这个类进行的联合组件方法:
...
6.联合组件 (对于串知识点很重要)
a) xml:
i:为什么要重写equals和hashcode
ii:为什么要实现serializable
b)@IdClass
在面向对象中
两个值为主键
就要分成两个类,一个类转为主键类,一个为正常的类。
步骤
1 ...
/hibernate_0400_ID/src/com/zhuhw/hibernate/model/Teacher.java
文件中加一个
@GeneratedValue
即可
//主键
@Id
@GeneratedValue
public int getId() {
return id;
}
@Basic//对数据库中,字段名和属性相同
public void setId(int id) {
this.id = id;
}
运行结果:
create table Teacher (id integer not null auto_increment, birt ...
星期六, 一月 02, 2016 14:04:55
id生成策略
1.对应项目:hibernate_0400_ID
2.注意:
a)我们观察hibernate生成表的结构并不是为了将来就用它生成,(可能还有自己的扩展,比如index等)
而是为了明白我们应该建立什么样的表和实体类映射。
3.
id主键:
1)在mysql用自增字段,用auto increatment
在oracle 用 sequence
注意:
对于类里面的对象里的这个值就不可以指定它了。得靠程序(数据库)帮我自动生成;
...
星期六, 一月 02, 2016 09:41:59
020_ID生成策略_XML_配置 17:18
021_ID生成策略_XML_配置_Annotation配置 13:51
022_ID生成策略_Annotation配置_IDENTITY_SEQUENCE 11:33
023_ID生成策略_Annotation配置_Table_Generator 16:31 用处不大
024_ID生成策略_联合主键_XML 21:18
星期日, 一月 03, 2016 18:28:03
017_Annotation字段映射位置
14.字段映射的位置(field或者get方法)
a)best practice:保持gfield和 get set方法一致
15.@Lob
16.课外:CLOB BLOB类型的数据存储
17.课外:hibernate自定义数据类型
18.hibernate类型
将注解放在get方法上面或是放在field上面
其实自己个人喜欢放在field上,实际上已经破坏了java面封装性,
本来是private,这样直接放在field上,直接拿了,不合适。
从设计的角度看,不建议这么干。
建议写在get方法 ...
8.表名和类名不同,对表名进行配置
8.1在使用注解的实体类
//表名和类名不同,对表名进行配置;使用Table注解
@Table(name = "_teacher") //name后的为数据库中对应的表名
public class Teacher {}
执行TestCase时,console的语句
insert
into
_teacher
(name, title, id)
values
(?, ?, ?)
数据库中会出现_teacher,进行对表的操作。
...
015_showsql_formatsql
会把sql语句打印在console
/hibernate_0100_HelloWorld/src/hibernate.cfg.xml
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
格式化sql,显得更好看些
<property name="format_sql">true</pr ...
junit4.7
一、引入jar包
好的习惯,建立自己的user library
junit-4.7.jar
建议:
1.学习maven的做法,将测试代码放在test目录下
----new source folder
src放的是开发性的代码
2.对哪个类进行测试,就对哪个包下面建一个TeacherTest类
当然可以用myeclipse直接进行建立junit test case
要加@Test注解
二、进行生成测试类
TeacherTest.java
将代码修饰一下
(每次测试都要建立一次SessionFac ...