对jdbc进行封装(二)
来源:互联网 发布:nba数据库统计 编辑:程序博客网 时间:2024/05/12 11:04
问题:(一)如何update对象bean时,只更部分字段?
(二)如何进行不用反射进行get和set对象bean的属性值?
解决方案:
(一)如何update对象bean时,只更部分字段
在解决此问题时,我首先想到的是查询hibernate是如何进行操作的:
1、先查询出要更新的对象,然后再更新要更改的字段;
2、在注解或配置文件中添加限定条件,如下:@Column(updatable=false)或者xml中<class name="com.sccin.entity.Student" table="student" dynamic-update="true"> ;
3、使用HQL语句。
总结:第一种方式实现起来很是痛苦,每次都要进行查询;第二种方式,只能满足一部分需求;第三中方式需要用到特定的HQL语句。上述三种方法都不满足我现在的需求。我的在封装jdbc操作时处理方法是当bean的属性值为null时,就不进行更新(我现在的情况是不往数据库里插入null值)。这样就能基本满足我的需求了(终于体会到了将数据类型设为包装类的用处了,呵呵,不会有基本数据类型int,long为0,boolean为false默认赋值的问题,包装类的值初始化时为null)。
(二)这个问题纠结了我很长很长的时间,在不知道明确的对象和属性时,我如何取得值呢?当时的第一想法就是用反射,而且为了满足我级联保存的需求,我需要反复的调用反射,但是这样效率就会有很大的影响。如何不用反射我就能取到我要存储数据的值呢?重新回顾的我的需求:1、取得bean里数据;2、往bean里插入数据;显然如果按照常规的bean的写法。我们是无法绕过反射这个“利器”的,那么我就需要打破常规,打破规范,以满足我现在的需求。问题的解决关键在于,不要直接对bean的属性取值,通过创建一个超类,然后定义map存储我们要包存的值。具体的做法:暂不罗列了因为又要贴好多代码。
因为现在项目不用任何的框架,jdbc操作需要自己封装,这样灵活性很大,可以打破现有的条条框框。有时候在想hibernate之所以很消耗性能,是不是因为它本身需要遵守的规范太多,以至于最后规范束缚了它的灵活性。
感想:条条框框可以在很多的情况下让我们循序渐进的项目,但是面对特殊的需求时,我们需要有打破常规的勇气,并进行尝试。
- 对jdbc进行封装(二)
- 对jdbc进行封装
- 对jdbc进行封装(三)
- java(JDBC连接数据库)[对Statement进行封装]
- java(JDBC连接数据库)[对PreparedStatement进行封装]
- 对jdbc进行封装遇到的问题(一)
- 使用JDBC对数据库进行CRUD(二)
- Hibernate 简单使用(二) JDBC封装
- JDBC入门(二)工具类封装
- jdbc封装二 DBConnect
- 委托(二):使用事件来对委托变量进行封装
- 对JDBC进行简单的封装,实现对数据库的增、删、改、查功能
- 对BaseAdapter进行封装
- 对类进行封装
- JDBC 对数据库连接的封装
- 基于ejb3,对JDBC进行封装,让使用JDBC时能像hibernate使用annotation注解一样简便,而且更加轻巧
- RoyalAjax(二),对HttpRequest的封装
- JDBC对数据表的基本操作(JDBC之二)
- 使用事件驱动模型实现高效稳定的网络服务器程序
- 树状数组
- 对jdbc进行封装遇到的问题(一)
- 335. Old sin makes new shame. 一失足成千古恨
- 再度牵手webservice—验证磨刀不误砍柴工的真理
- 对jdbc进行封装(二)
- Google C++ 编程规范 1.3
- 11-16这是昨晚的 贪吃蛇 container map food snake 几个div的构造如下(功能有待实现)
- VS2010 Asp.net rdlc报表 拥有多个数据源
- HTML5时代的来临
- 简单工厂和工厂方法
- 魔兽之父:《Warcraft是怎样炼成的(一)》
- Web开发者的最爱 5个超实用的HTML5 API
- Warcraft是怎样炼成的(二):我们是一个团队