`
yangyi
  • 浏览: 114558 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何应用Hibernate在运行期获取属性的值

    博客分类:
  • Java
阅读更多
java 代码
 
  1. import java.lang.reflect.Method;  
  2.   
  3. /** 
  4.  * 获取指定bean的指定字段的值 
  5.  */  
  6. public class BeanUtils {  
  7.     private BeanUtils(){}  
  8.       
  9.     /** 
  10.      * 根据beanName和列名字获取hql语句 
  11.      * @param beanName 
  12.      * @param columnNames 
  13.      * @return 以list形式返回数据的hql语句 
  14.      */  
  15.     public static String getHql(String beanName, String[] columnNames){  
  16.         StringBuffer sb = new StringBuffer();  
  17.         sb.append("select new list(");  
  18.         StringBuffer columnString = new StringBuffer();  
  19.         for(int i=0,len=columnNames.length;i<len;i++){  
  20.             columnString.append(",");  
  21.             columnString.append(columnNames[i]);  
  22.         }  
  23.         sb.append(columnString.substring(1));  
  24.         sb.append(") from ");  
  25.         if(Character.isUpperCase(beanName.charAt(0)))  
  26.             sb.append(beanName);  
  27.         else  
  28.             sb.append(upperFirstChar(beanName));  
  29.         return sb.toString();  
  30.     }  
  31.     /** 
  32.      * @param bean 获取到的域对象 
  33.      * @param fieldName 欲获取值的字段名 
  34.      * @return 字段在当前bean封装下的值 
  35.      */  
  36.     public static Object getFieldByName(Object bean, String fieldName){  
  37.         try {  
  38.             Method m = bean.getClass().getMethod("get"+upperFirstChar(fieldName), null);  
  39.             return m.invoke(bean, null);  
  40.         } catch (Exception e) {  
  41.             e.printStackTrace();  
  42.         }  
  43.         return null;  
  44.     }  
  45.     private static String upperFirstChar(String orig){  
  46.         return Character.toUpperCase(orig.charAt(0)) + orig.substring(1);  
  47.     }  
  48. }  
按照已经处理后,我们就可以既应用Hibernate对象访问的优点,又不损失字符串的灵活性,代码中应用了Hibernate的select特性及java的反射机制
分享到:
评论

相关推荐

    深入浅出Hibernate4(个人整理)

    Hibernate是一个轻量级的ORMapping(Object Relational Mapping,对象关系映射)框架。...但是对于那些在基于Java的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,Hibernate是最有用的。

    hibernate-release-5.1.13.Final.zip

    1. 改进的性能:5.1.13.Final版本在性能上进行了优化,包括查询执行速度、内存管理以及缓存策略的改进,使得应用程序在大数据量操作时仍能保持高效运行。 2. 支持Java 8:此版本完全兼容Java 8,包括日期时间API,...

    hibernate性能优化

    【hibernate性能优化】是开发中至关重要的环节,它涉及到多个方面,包括数据库层面、配置文件调整、代码优化和数据库交互策略等。...在使用Hibernate进行开发时,对性能的持续关注和优化是确保系统高效运行的关键。

    深入理解Java的反射机制Java系列2021.pdf

    Java的反射机制是Java语言提供的一种能力,它允许程序在运行期动态地访问和修改类的属性和方法。对于理解Java反射机制,需要掌握以下核心知识点: 1. 反射机制基础: Java程序在编译期和运行期有不同的处理过程。...

    Java全方面面试题,很全

    javaWeb,java基础,java异常,jsp&servlet,...- **优点:** 运行期类型的判断,动态加载类,提高代码灵活度。 - **缺点:** 性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的java代码要慢很多

    花期面试常问问题

    - `&lt;jsp:getProperty&gt;`:获取JavaBean的属性值。 4. **JSP内置对象:** - `request`、`response`、`session`、`application`、`out`等。 5. **动态与静态包含的区别:** - 动态包含通过`&lt;jsp:include&gt;`,可以在...

    类的反射机制您的网络连接,请

    在Java 1.5引入的反射API使得开发者可以在编译期未知的情况下,动态地获取类的信息并执行相关操作。以下将详细介绍反射的基本概念、应用场景以及相关的API。 **反射基本概念** 1. **Introspection (内省)**:这是...

    软件开发中异常分析

    例如,在Hibernate框架中,如果尝试通过getter方法获取一个并不存在的属性值,则会抛出此类异常。具体到案例中,当调用`getGAccountId()`时,如果对应的JavaBean模型中没有定义相应的`GAccountId`属性,则会引发异常...

    Spring系列面试题129道(附答案解析)

    依赖注入(DI)是一种设计模式,它允许一个对象通过构造器、工厂方法的参数或属性来定义它们对其他对象的依赖关系,然后由外部实体(通常是IoC容器)在运行期来解析这些依赖关系,并将依赖的对象注入到需要它们的...

    MyBatis面试专题.docx

    通过CGLIB创建目标对象的代理,当调用关联属性时,代理对象会检查该属性是否已加载,若未加载则执行SQL获取关联数据。 **与Hibernate的差异**: MyBatis和Hibernate的主要区别在于,Hibernate提供更全面的自动化ORM...

    反射学习笔记

    1. **什么是反射**:反射是Java提供的一种机制,能够在运行时获取类的信息(如类名、属性、方法等)并动态调用这些元素。这打破了常规的编译时类型检查,为程序提供了更大的灵活性。 2. **Class对象**:每个Java类...

    ssh jar包介绍

    `aspectjrt`是运行时的库,而`aspectjweaver`则是用于编译期和运行时织入AOP代理的工具。 3. **commons-dbcp.jar** 和 **commons-pool.jar**:这些包分别用于数据库连接池管理和通用对象池管理。`commons-dbcp`是...

    ACCP 二期JSP_servlet_javabean笔记

    `分别用于存储和获取Session属性值。需要注意的是,通过`getAttribute()`获取到的对象需要进行类型转换才能使用。 - **Session的有效期**:Session默认有效期为30分钟,可以通过设置`setMaxInactiveInterval(int ...

    JAVA笔试题

    - **题目**: Servlet的doPost与doGet方法中HttpServletRequest和HttpServletResponse实例由ServletContainer在运行期动态注入,这种与Spring依赖注入中的哪种模式对应? - A. 设值注入 - B. 引用注入 - C. 构造...

    J2EE企业级项目开发-1期 任务2-4 实训项目单.doc

    在J2EE企业级项目开发中,BBS管理系统是一个典型的案例,它涉及到多方面的技术应用,尤其是数据库操作和持久化框架的使用。本实训项目主要目标是让学生掌握JavaEE中的Hibernate框架,特别是Criteria查询机制,以及...

    java程序员ssh面试常见题

    - **AOP**:通过预编译方式或运行期代理实现程序功能的统一维护的一种技术。Spring AOP允许开发人员将横切关注点分离出来,并将它们集成到应用程序中,如日志记录、事务管理等。 - **IOC**:也称为DI(依赖注入)...

    Java项目经验.docx

    异常处理是Java编程中的重要部分,你需要区分编译期错误和运行期错误,理解Exception和RuntimeException的分类,以及checked和unchecked异常的使用。熟练掌握try-catch-finally语句块、throw和throws关键字,以及...

Global site tag (gtag.js) - Google Analytics