删除方法:新建的对象立马被删除@Testpublic void testDelete() {Teacher t = new Teacher();t.setName("t1");t.setTitle("middle");t.setBirthDate(new Date());Session session = sessionFactory.getCurrentSession();session.beginTransaction();session.save(t);System.out.println(t.getId());session.getTransaction().commit();Session session2 = sessionFactory.getCurrentSession();session2.beginTransaction();session2...
一篇文章里边有多张图片,典型的单向一对多关系多方 当程序运行到这一句的时候必然报错 但是参考书也是这样写的 其中em是 EntityManager em = JPA.createEntityManager(); 我本就是为了省事儿,采用的hibernate,结果你又让我用JPA这不是扯淡吗???/经过两天的无脑研究我发现一对多的情况,如果一方来控制,那么多方不能在实体中创建外键也就是说,要这样做 /** To change this license header, choose License Headers in P...
session的方法:save(): insert调用save方法之后,瞬时态对象可以变成持久态;update():update将游离态对象变为持久态saveOrUpdate():insert or update merge():merge()方法可以完成save()和update()方法的功能,它的意图是将新的状态合并到已有的持久化对象上或创建新的持久化对象。将游离态对象变为持久态。lock():lock()方法是把一个没有更改过的脱管状态的对象变成持久状态。persisit():persist()方法保证当它在一个事务外部被...
Hibernate的对象有3种状态,分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。 瞬时态 由new命令开辟内存空间的java对象, eg. Person person = new Person("xxx", "xx"); 如果没有变量对该对象进行引用,它将被java虚拟机回收。 瞬时对象在内存孤立存在,它是携带信息的载体,不和数...
原文地址:http://www.iteye.com/topic/2712先来点概念: 在Hibernate中,最核心的概念就是对PO的状态管理。一个PO有三种状态:
1、未被持久化的VO
此时就是一个内存对象VO,由JVM管理生命周期
2、已被持久化的PO,并且在Session生命周期内
此时映射数据库数据,由数据库管理生命周期
3、曾被持久化过,但现在和Session已经detached了,以VO的身份在运行
这种和Session已经detached的PO还能够进入另一个Session,继续进行PO状态管理...
1、使用spring控制事务2、使用session.update(obj)执行更新spring事务配置:<bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true"><property name="transactionManager" ref="transactionManager"/><property name="transactionAttributes"><props><prop key="add*">PROPAGATION_REQUIRED,-Exception</prop><prop key="edit*">PROPAGAT...
hibernate update
Hibernate 中如果直接使用
Session.update(Object o);
会把这个表中的所有字段更新一遍。
比如:
view plaincopy to clipboardprint?
public class TeacherTest {
@Test
public void update(){
Session session = HibernateUitl.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher) session.get(Teacher.class, 3);
t.setName("yangtb2");
session.updat...
Hibernate 中如果直接使用Session.update(Object o);会把这个表中的所有字段更新一遍。比如:[java] view plaincopypublic class TeacherTest { @Test public void update(){ Session session = HibernateUitl.getSessionFactory().getCurrentSession(); session.beginTransaction(); Teacher t = (Teacher) session.get(Teacher.class, 3); t.setName("yangtb2"); sessi...
在删除主表数据时,报了一个异常Cannot delete or update a parent row: a foreign key constraint fails 原因是主表中还包含字表的数据,不能删除与这张表或数据有关联的字段,所以无法删除 解决办法:在创建数据库的外键时,将删除的动作配置由RESTRICT改成cascade,就可以解决.原文:http://www.cnblogs.com/E-star/p/3574221.html
今天对已存在的两个表中的一个表添加另一个表的主键为外键,遇到以下错误:sql 1452 Cannot add or update a child row:a foreign key constraint fails原因:设置的外键和对应的另一个表的主键值不匹配。解决方法:找出不匹配的值修改。或者清空两表数据。原文:http://www.cnblogs.com/aishangtaxuefeihong/p/6821261.html
1、实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hql).list();上面的代码执行结果是,查询出User实体对象所对应的所有数据,而且将数据封装成User实体对象,并且放入List中返回。这里需要注意的是,Hibernate的实体查询存在着对继承关系的判定,比如我们前面讨论映射实体继承关系中的Employee实体对象,它有两个子类分别是 HourlyEm...
Hibernate在对资料库进行操作之前,必须先取得Session实例,相当于JDBC在对资料库操作之前,必须先取得Connection实例, Session是Hibernate操作的基础,它不是设计为执行绪安全(Thread-safe),一个Session由一个执行绪来使用。开启SessionSession实例由SessionFactory开启获得,例如:Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session =...
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)at org.hibernate.e...
saveOrUpdate()方法执行数据库操作不成功:这个问题是你的hibernate.xml文件中的事物配置不正确。导致更新的数据是瞬时状态,没有与Session关联。
具体的配置如下:<!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> <property name="globalRollbackOnParticipationF...
最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate
如果是在配置文件的话那就是dynamic -insert 和 dynamic-update
这两个注解在一定程度上可以增加与数据库操作相关的速度,可以节省SQL语句的执行时间,提高程序的运行效率。
使用这两个注解只需要在实体类上加入即可,或者在*.hbm.xml配置。这两个注解是boolean值,true或者false。
1.首先使用false来看一下执行的结果,我们就拿更新来举例:
...