輕量級的 Java ORM 小型框架 - u-orm

openkk 12年前發布 | 51K 次閱讀 Java ORM 持久層框架

u-orm 是一個適用、快速、簡單、輕量級的 Java ORM 小型框架,無第三方包依賴,只有一個commons-logging.jar ,為了日志輸出。整個jar包只有121KB,并封裝了很多實用的操作函數,詳細見api中的 org.uorm.dao.common.ICommonDao 。

enjoy it! just make your own simple orm.

POJO生成工具

提供數據庫對應ORM類生成工具,詳見Wiki里的“POJO生成工具”

使用簡單

使用簡單、上手快、靈活,無需學習HQL、Mybatis等,只需要會sql就行。 使用示例:

String driver = "com.mysql.jdbc.Driver";//"oracle.jdbc.driver.OracleDriver";
                /**連接字串 */
                String url = "jdbc:mysql://127.0.0.1/simdb";//"jdbc:oracle:thin:@127.0.0.1:1521:orcl";
                /** 數據庫用戶名 */
                String username = "root";//"cctv";//"root";
                /** 數據庫密碼 */
                String password = "root";//"1";//"root";
                long start = System.currentTimeMillis();
                DatasourceConfig config = new DatasourceConfig();
                config.setDriverClass(driver);
                config.setJdbcUrl(url);
                config.setUsername(username);
                config.setPassword(password);
                Map<String, String> poolPerperties = new HashMap<String, String>();
                //使用c3p0連接池
                poolPerperties.put("___POOL_TYPE_", "c3p0");
                poolPerperties.put("initialPoolSize", "2");
                poolPerperties.put("maxIdleTime", "600");
                poolPerperties.put("idleConnectionTestPeriod", "600");
                //裝配c3p0連接池,不設置,代表不使用連接池,直接使用JDBC。
                //內置支持c3p0和BoneCP
                config.setPoolPerperties(poolPerperties);
                //ConnectionFactory可擴展自己的實現,支持你需要的連接池和業務邏輯
                ConnectionFactory connectionFactory = new DefaultConnectionFactory(config);
                ICommonDao dao = new CommonDaoImpl(connectionFactory );
//              dao.beginTransation();
                //按主鍵查
                User user = dao.queryBusinessObjByPk(User.class, 1);
                System.out.println(user.getLoginName());
                System.out.println("耗時:" + (System.currentTimeMillis() - start) + " ms");
                start = System.currentTimeMillis();
                List<User> users = dao.queryBusinessObjs(User.class, "select t.*, 'test' from UUM_USER t");
                System.out.println(users.size() + "," + users.get(0).getLoginName());
                Long count = dao.querySingleObject(Long.class, "select count(*) from UUM_USER");
                System.out.println(count);
                List<Map<String, Object>> userListMap = dao.queryForListMap("select * from UUM_USER");
                for (Map<String, Object> map : userListMap) {
                        for (String key : map.keySet()) {
                                System.out.println(key + " = " + map.get(key));
                        }
                        System.out.println("----------------------");
                }
                Map<String, Object> u = dao.queryForMap("select * from UUM_USER");
                for (String key : u.keySet()) {
                        System.out.println(key + " = " + u.get(key));
                }
                User uu = dao.querySingleObject(User.class, "select * from UUM_USER");
                System.out.println(uu.getLoginName());
                users = dao.queryBusinessObjs(User.class, "select * from UUM_USER where ID = ?", 0, 102, new SqlParameter(User.PROP_ID, 1));
                System.out.println("===============================");
                System.out.println(users.size());
                for(User ue : users){
                        System.out.println(ue.getLoginName());
                }
                //分頁查詢
//              PaginationSupport<User> upage = dao.queryByPagedQuery(User.class, "select * from UUM_USER where ID = ?", 0, 10, new SqlParameter(User.PROP_ID, 1));
                PaginationSupport<User> upage = dao.queryByPagedQuery(User.class, "select * from UUM_USER", 1, 10);
                System.out.println("*************************************");
                System.out.println("total = " + upage.getTotalCount() + ", page count = " + upage.getPageCount());
                users = upage.getItems();
                System.out.println(users.size());
                for(User ue : users){
                        System.out.println(ue.getLoginName());
                }
                System.out.println("---------- delete -------------------");
                System.out.println(dao.deleteBusiness(users.get(0)));
//              System.out.println("---------- update -------------------");
//              user.setUserName(user.getLoginName());
//              user.setPassword("123456");
//              user.setBirthday(new Date());
//              System.out.println(dao.updateBusinessObjs(false, user));
//              System.out.println("---------- save -------------------");
                List<User> userss = new ArrayList<User>();
                for(int i = 207; i <= 1+207; i ++){
                        User uus = new User();//new User(i);
                        uus.setLoginName("loginname-"+Utils.genRandomNum(6));
                        uus.setUserName("username-"+ Utils.genRandomNum(6));
                        uus.setPassword("password-"+i);
                        uus.setDescription("desc-"+i);
                        uus.setState(i);
                        uus.setCreateTime(new Timestamp(System.currentTimeMillis()));
                        uus.setUserCard("usercard-"+i);
                        uus.setUserType(i);
                        uus.setEmail("email-"+i);
                        uus.setSex(i);
                        uus.setAddress("address-"+i);
                        uus.setBirthday(new Timestamp(System.currentTimeMillis()));
//                      uus.setTest("ddd");
                        userss.add(uus);
                }
                System.out.println(dao.saveBusinessObjs(userss));
//              dao.commitTransation();

                /**test id generator*/
//              User us =  new User();
//              us.setLoginName("loginname-id");
//              us.setUserName("username-id");
//              us.setPassword("password-id");
//              us.setDescription("desc-id");
//              us.setState(1);
//              us.setCreateTime(new Date());
//              us.setUserCard("usercard-id");
//              us.setUserType(1);
//              us.setEmail("email-id");
//              us.setSex(1);
//              us.setAddress("address-id");
//              us.setBirthday(new Date());
//              System.out.println(dao.saveBusinessObjs(us));
//              System.out.println(us.getId());
//              TestUuid test = new TestUuid();
//              test.setSeqNum(10);
//              System.out.println(dao.saveBusinessObjs(test));
//              System.out.println(test.getId());

                /**test lob*/
//              CimData cimdata = dao.queryBusinessObjByPk(CimData.class, 2, 1);
//              System.out.println(cimdata.getCimClassId());
//              System.out.println(new String(cimdata.getCimOp()));
//              System.out.println(new String(cimdata.getCimInst()));
//              ObjectInputStream oi = new ObjectInputStream(new ByteArrayInputStream(cimdata.getCimInst()));
//              CimData cd = (CimData)oi.readObject();
//              System.out.println(cd.getCimClassId());
//              System.out.println(new String(cd.getCimOp()));
//              System.out.println(new String(cd.getCimInst()));

//              ByteArrayOutputStream baos = new ByteArrayOutputStream();
//              ObjectOutputStream oos = new ObjectOutputStream(baos);
//              oos.writeObject(cimdata);
//              oos.flush();
//              baos.flush();
//              byte[] bytes = baos.toByteArray();
//              baos.close();
//              oos.close();
//              cimdata.setCimInst(bytes);
//              System.out.println( dao.updateBusinessObjs(false, cimdata) );
                System.out.println("耗時:" + (System.currentTimeMillis() - start) + " ms");

#支持數據庫類型:

DB2、Postgresql、Oracle、MS-SqlServerMySqlH2Database、Derby、HSQL、Firebird、 Interbase、Informix、Ingres (9,10)、Unisys 2200 Relational Database (RDMS)、TimesTen 5.1

#支持的主鍵生成器:

assigend、uuid、uuid.hex、guid、increment、sequence、select 用戶可實現自己的主鍵生成器 實現接口org.uorm.dao.id.IdentifierGenerator。 并把ORM對應類的keyGenerator設置為實現的類全名例:org.uorm.dao.id.UUIDGenerator

Dependency jar(依賴包)

只有一個依賴包 commons-logging.jar , 只是為了日志輸出。

項目主頁:http://www.baiduhome.net/lib/view/home/1329185086124

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!