Hibernate总结
来源:互联网 发布:agile java被淘汰了吗 编辑:程序博客网 时间:2024/06/09 14:06
1.SpringMVC的beans配置
<bean id="sessionFactory" name="sessionFaction" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource" /> </property> <!-- 加载hibernate的jpa注解形式的实体类,包括model和demo包中的所有实体类。 --> <property name="packagesToScan"> <list> <value>com.dadi.**.entity</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect </prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.generate_statistics">false</prop> <prop key="hibernate.connection.release_mode">auto</prop> <prop key="hibernate.autoReconnect">true</prop> <prop key="hibernate.use_sql_comments">false</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.format_sql">false</prop> </props> </property></bean>
2.DAO里的写法
@SuppressWarnings("unchecked")public class BaseDao { @Resource private SessionFactory sessionFactory; public Session getSession() { return sessionFactory.getCurrentSession(); }}
public String check(String pwd, Integer id) { // TODO Auto-generated method stub String hql = ""; hql = "sql语句"; String result = ""; //hql用 Query query = getSession().createQuery(hql); //sql用 SQLQuery query = getSession().createSQLQuery(hql); //executeUpdate()返回执行成功的记录的条数(int类型),用于update,add,del语句 result = String.valueOf(query.executeUpdate()); //uniqueResult()返回的结果唯一或者为null(Object类型),用于select语句 result = query.uniqueResult(); //查询返回多个值用list()方法(方法类型应该修改为List<Xxx>) result = query.list(); return result; }
3.Hibernate注解说明
说明:
1.@Column注解有如下的属性
name 可选,列名(默认值是属性名) unique 可选,是否在该列上设置唯一约束(默认值false) nullable 可选,是否设置该列的值可以为空(默认值false) insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true) updatable 可选,该列是否作为生成的update语句中的一个列(默认值true) columnDefinition 可选,为这个特定列覆盖sql ddl片段(这可能导致无法在不同数据库间移植) table 可选,定义对应的表(默认为主表) length 可选,列长度(默认值255) precision 可选,列十进制精度(decimal precision)(默认值0) scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)
2.@GeneratedValue注解有如下属性:
strategy 指定生成的策略(JPA定义的),这是一个GenerationType。默认是GenerationType.AUTOGenerationType.AUTO 主键由程序控制GenerationType.TABLE 使用一个特定的数据库表格来保存主键GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型)GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。这个值要与generator一起使用,generator 指定生成主键使用的生成器(可能是orcale中的序列)。
3.@SequenceGenerator注解有如下属性
name 表示该表主键生成策略名称,它被引用在@GeneratedValue中设置的"gernerator"值中sequenceName 表示生成策略用到的数据库序列名称。initialValue 表示主键初始值,默认为0。allocationSize 每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50。
4.GenericGenerator注解有如下属性:
name 指定生成器名称。strategy 指定具体生成器的类名(指定生成策略)。parameters 得到strategy指定的具体生成器所用到的参数
4.add方法返回值会自动更新的问题(动态更新)
执行完`reimburseService.addReimburse(reimburse);`后台会自动执行update语句1.是因为这个对象还与Session关联时,操作属性会导致该对象的数据版本更新。如果希望与session脱离 ,使用 session.evict(obj)。 2.get一个数据,这个对象就变成持久性对象,set也就是修改这个持久性对象的属性后,当事务提交后就会自动更新到数据库
如果你不想让它自动更新,你们可采取以下方法:
在映射文件相应属性中设置update=”false”可以不用更新该字段
或者是在映射文件中的class标签里面加上:dynamic-insert=”false”
阅读全文
1 0
- Hibernate总结
- hibernate总结
- hibernate总结
- hibernate总结
- hibernate 总结
- Hibernate总结
- Hibernate总结
- hibernate总结
- Hibernate总结
- hibernate总结
- Hibernate总结
- Hibernate总结
- Hibernate总结
- Hibernate总结
- hibernate 总结
- Hibernate 总结
- Hibernate 总结
- Hibernate总结
- JavaScript ---- 实现跨域方法总结
- asp.net重新将值赋予新声明的DataTable中
- 深度学习概述
- 《道德经》·第二十七章
- Android屏幕适配全攻略(最权威的官方适配指导)
- Hibernate总结
- 112 C语言枚举类型(Enum)
- Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)
- 深入理解Java内存模型
- mkdir()和mkdirs()区别
- 10.5 吋 iPad Pro、HomePod、iMac Pro 上手体验
- js数组操作
- redis for windows 服务安装
- Android Vibrator使用