ORM原理

简介:
ORM原理:

   static List<Object> getObjects(String sql, Class clazz)
       throws SQLException, Exception, IllegalAccessException,
      InvocationTargetException {
    Connection conn =  null;
    PreparedStatement ps =  null;
    ResultSet rs =  null;
     try {
      conn = JdbcUtils.getConnection();
      ps = conn.prepareStatement(sql);
      rs = ps.executeQuery();
      String[] colNames = getColNames(rs);

      List<Object> objects =  new ArrayList<Object>();
      Method[] ms = clazz.getMethods();
       while (rs.next()) {
        Object object = clazz.newInstance();
         for ( int i = 0; i < colNames.length; i++) {
          String colName = colNames[i];
          String methodName =  "set" + colName;
           // Object value = rs.getObject(colName);
           // try {
           // Method m = clazz
           // .getMethod(methodName, value.getClass());
           // if (m != null)
           // m.invoke(object, value);
           // } catch (NoSuchMethodException e) {
           // e.printStackTrace();
           // //
           // }
           for (Method m : ms) {
             if (methodName.equals(m.getName())) {
              m.invoke(object, rs.getObject(colName));
               break;
            }
          }
          objects.add(object);
        }
      }
       return objects;
    }  finally {
      JdbcUtils.free(rs, ps, conn);
    }
  }

   private  static String[] getColNames(ResultSet rs)  throws SQLException {
    ResultSetMetaData rsmd = rs.getMetaData();
     int count = rsmd.getColumnCount();
    String[] colNames =  new String[count];
     for ( int i = 1; i <= count; i++) {
      colNames[i - 1] = rsmd.getColumnLabel(i);
    }
     return colNames;
  }


本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/246904,如需转载请自行联系原作者
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
ORM基础
ORM是对象关系映射,简化数据库与数据模型的绑定,允许模型设计独立于特定数据库。在Django中使用ORM,包括三步:1) 定义模型类,如`User`,包含字段;2) 配置数据库连接,如sqlite3或mysql;3) 使用`makemigrations`和`migrate`命令创建数据库表。若需查看ORM转换的SQL,可配置日志设置。此外,可为每个应用单独配置数据库,并用`migrate --database`进行特定数据库的迁移。
|
5月前
|
缓存 Java 数据库连接
从ORM到实践:Hibernate与JPA的详细指南
【6月更文挑战第25天】ORM技术如Hibernate和JPA简化了Java与数据库交互。Hibernate是流行的ORM框架,JPA是Java EE的规范,两者结合提供了高效的数据持久化方案。配置Hibernate涉及数据库连接和实体映射。通过注解定义实体类,如`@Entity`、`@Table`、`@Id`等。持久化操作通过Session接口完成,例如保存对象。缓存、加载策略(延迟加载 vs. 立即加载)和查询优化是提升性能的关键。理解这些概念有助于选择和优化ORM使用。
142 0
|
6月前
|
SQL 关系型数据库 MySQL
ORM模型介绍
ORM模型介绍。
54 4
|
11月前
|
SQL 关系型数据库 MySQL
我们要不要使用 ORM?
我们要不要使用 ORM?
|
SQL 关系型数据库 程序员
什么是ORM?为什么要使用ORM?底层原理是什么?
什么是ORM?为什么要使用ORM?底层原理是什么?
1373 0
|
SQL 关系型数据库 数据库
ORM操作是什么意思?底层原理是什么?
ORM操作是什么意思?底层原理是什么?
255 0
|
SQL 算法 数据库
什么是ORM?为什么用ORM?浅析ORM的使用及利弊
什么是ORM ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
3017 0
|
数据库 SQL Python
ORM详解
ORM详解
1125 0
|
数据库连接 数据库
ORM映射框架总结--数据操作(五)
1.数据库加载驱动和操作接口 IDbProvider 代码  1 /** 2  *  3  * 2009-4-22 4  *  5  *  6  * 数据库操作加载驱动接口,  7  * 提供了数据库操作的各种命令  8  * */ 9 using System;10 using System.
797 0
|
SQL 存储 数据库
ORM映射框架总结--数据操作(六)
1. 数据库操作接口 IDbHelper 代码 /** *  * 2009-4-22 *  *  * 提供各种数据库操作方法以及实体类操作方法 * */using System;using System.
652 0