hibernate参数一览表
- 格式:docx
- 大小:31.16 KB
- 文档页数:6
Hibernate的save方法1. 简介Hibernate是一个开源的Java持久化框架,它提供了一种方便的方式来将Java对象映射到关系数据库中。
在Hibernate中,save方法是用于将一个对象保存到数据库中的方法之一。
本文将详细介绍Hibernate的save方法的使用方式、参数、返回值和注意事项。
2. save方法的使用方式在Hibernate中,使用save方法将一个对象保存到数据库中非常简单。
首先,需要创建一个SessionFactory对象,该对象是Hibernate的核心对象,用于创建Session对象。
然后,通过Session对象调用save方法来保存对象。
下面是一个简单的示例代码:SessionFactory sessionFactory = new Configuration().configure().buildSessionFa ctory();Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();MyObject myObject = new MyObject();// 设置对象的属性myObject.setName("John");myObject.setAge(25);session.save(myObject);mit();session.close();在上面的示例中,我们首先创建了一个SessionFactory对象,然后打开一个Session对象,并开启了一个事务。
接下来,创建了一个MyObject对象,并设置了其属性。
最后,通过调用session的save方法将对象保存到数据库中。
最后,我们提交事务并关闭Session。
3. save方法的参数save方法接受一个对象作为参数,该对象将被保存到数据库中。
3.hibernate.hbm2ddl.auto :在SessionFactory 创建时,自动检查数据库结构,或者将数据库schema 的DDL 导出到数据库。
使用create-drop 时,在显式关闭SessionFactory 时,将删除掉数据库schema。
例如:validate | update | create | create-dropcreate :如果没有表就创建update :如果表结构更新,就更新validate :每次插入表的时候看看表结构有没有更新。
理论上是先建类后建表:这个时候只要你的类建好了,可以跨数据库。
实际中先建表比先建类多,建好表以后要对数据库进行优化,比如建索引,建试图,各种各样的优化。
project\etc目录下面有很多示例性的文档,log4j的文档就在那个下面。
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); SessionFactory的建立是很耗费时间的,应该像连接池一样,只建立一次,以后要用就直接从那用。
Hibernate文档建议我们自己写一个辅助类,用单例来做。
JUnit的一个bug:@BeforeClasspublic static void beforeClass() {sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();}在这句话的时候配置文件如果有的时候写错了,她悄悄把错误隐藏起来了。
解决的方法:可以对这句话加try catch块8.表名和类名不一致的时候:@Entity@Table(name="_teacher")public class Teacher {10字段名和属性名不一致的时候@Column(name="_name")public String getName() {return name;}11 不需要的字段的设置@Transientpublic String getYourWifeName() {return yourWifeName;}12 映射指定的时间日期@Temporal(TemporalType.TIME)public Date getBirthDate() {return birthDate;}在注解里面如果一个注解的属性名字叫value,你可以不写,直接写后面的值,如@Temporal(value=“TemporalType.TIME”)可写成上面的那样。
hibernate validator 参数范围
哎,各位看官,今儿咱来聊聊这Hibernate Validator里头的参数范围这点子事儿。
咱们得让数据在合理范围内跑,免得乱窜出幺蛾子,对吧?
首先说说这Hibernate Validator,它就好像是咱们四川的麻辣火锅,得
把各种食材码得齐齐整整,才能煮出一锅好味道。
那参数范围呢,就像火锅里的辣椒和花椒,得适量,多了少了都不好吃。
咱们贵州的方言里,有个说法叫“恰到好处”,这就是说,设定参数范围得刚刚好,多了少了都不行。
就像咱贵州的酸汤鱼,酸度、辣度都得适中,才能吃出那个味儿。
再来说说陕西方言,那边的人说话直来直去,就像这Hibernate Validator 一样,直截了当。
参数范围设定好了,数据就得按照这个规矩来,不能有半点儿马虎。
就像陕西的羊肉泡馍,羊肉得切得细细的,馍要泡得软软的,这样才好吃。
最后咱说说北京方言,那边的人说话讲究个“得体”。
设定参数范围也得得体,既不能限制得太死,也不能放得太宽。
就像北京的烤鸭,皮要烤得脆脆的,肉要嫩嫩的,这才叫一个地道。
所以呀,各位看官,这Hibernate Validator的参数范围设定,得跟咱们各地的美食一样,得讲究个恰到好处、直截了当、得体才行。
这样,咱们的数据才能在合理的范围内欢快地奔跑,咱们的程序才能稳稳当当地运行。
Hibernate之one-to-many感悟:基于架构的设计,主要在于xml配置文件的编写原理:表中一对多的实现是在表中使用外键关联,也就是通过一张表的主键做为另一个表的外键来建立一对多关系。
在hibernate的pojo类中实现一对多关系的方法是在主控类中个设置一个集合属性来包含对方类的若干对象,而在另一个类中,只包含主控类的一个对象,从而实现一对多关系的建立。
例如:customer和order表,一个customer对应多个order(订单),则应该在Customer的pojo类中设置一个set来包含order的若干对象。
demo:1、数据库:create table `testdb`.`customer`(`cid` int not null auto_increment,`cname` varchar(20),primary key (`cid`));create unique index `PRIMARY` on `testdb`.`customer`(`cid`);create table `testdb`.`order`(`oid` int not null auto_increment,`odes` varchar(500),`cid` int,primary key (`oid`));create unique index `PRIMARY` on `testdb`.`order`(`oid`);注意,上面两个表在数据库中是相互独立的噢,因为这里所说的一对多是在hibernate层上讨论的,跟在数据库中创建主外键的关联不一样。
2、创建eclipse的hibernate支持3、创建两个表的hbm映射,并相应生成POJO类4、修改pojo类遵从刚才讨论的在hibernate层上实现一对多的原则:在主控类中个设置一个集合属性来包含对方类的若干对象,而在另一个类中,只包含主控类的一个对象,从而实现一对多关系的建立。
c3p0使用简介.txt台湾一日不收复,我一日不过4级!如果太阳不出来了,我就不去上班了;如果出来了,我就继续睡觉!<c3p0-config><default-config><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。
Default: 3 --><property name="acquireIncrement">3</property><!--定义在从数据库获取新连接失败后重复尝试的次数。
Default: 30 --><property name="acquireRetryAttempts">30</property><!--两次连接中间隔时间,单位毫秒。
Default: 1000 --><property name="acquireRetryDelay">1000</property><!--连接关闭时默认将所有未提交的操作回滚。
Default: false --><property name="autoCommitOnClose">false</property><!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。
如果定义了这个参数那么属性preferredTestQuery将被忽略。
你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。
Default: null--><property name="automaticTestTable">Test</property><!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。
hibernate中in条件形参在Hibernate中,我们可以使用IN条件来查询某个属性值是否在指定的一组值中。
当我们需要在查询中使用IN条件时,我们可以使用命名参数或者位置参数来传递参数值。
首先,让我们来看看如何在Hibernate中使用位置参数来实现IN条件。
假设我们有一个实体类User,其中有一个属性age,我们希望查询年龄在一组特定值内的用户。
我们可以使用HQL (Hibernate Query Language)来编写查询语句,示例如下:java.String hql = "FROM User u WHERE u.age IN (:ages)";Query query = session.createQuery(hql);List<Integer> ageList = Arrays.asList(25, 30, 35); // 假设这是我们要查询的年龄列表。
query.setParameterList("ages", ageList);List<User> userList = query.list();在上面的示例中,我们使用了命名参数:ages来表示IN条件中的参数,然后通过query.setParameterList()方法将参数值传递进去。
这样就可以查询年龄在指定列表中的用户了。
另外,我们也可以使用位置参数来实现上述功能。
示例如下:java.String hql = "FROM User u WHERE u.age IN (?1, ?2, ?3)";Query query = session.createQuery(hql);query.setParameter(1, 25);query.setParameter(2, 30);query.setParameter(3, 35);List<User> userList = query.list();在这个示例中,我们使用了位置参数?1, ?2, ?3来表示IN条件中的参数,然后通过query.setParameter()方法将参数值传递进去。