老题:Java 如此 ActiveRecord 可行否?

探讨了在Java Web应用中使用类似ActiveRecord模式的可能性,该模式简化了数据访问操作,如增删改查等,并考虑了与Spring框架的集成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java在web应用方面,是否有如下的开发模式的可能(直接在Action写如下代码)?

[code]
1、User user = ActiveRecord.insert(User.class, "logonName=root;desc='value with blank chars';");
2、user.setDesc("some desc for the new user");
3、ActiveRecord.insert(user);
4、ActiveRecord.update(user);
5、ActiveRecord.delete(user);
6、ActiveRecord.get(user, "7777");//get by id
7、ActiveRecord.load(user, "8888");//load by id
8、ActiveRecord.load(User.class, "9999");//return a unique result
9、ActiveRecord.findEq(User.class, "logonName", "root");
10、ActiveRecord.findLe(User.class, "logonName","root");
11、ActiveRecord.find(User.class, "age>20 and age<22");// return list
12、ActiveRecord.get(User.class, "path='best_guy'");//return a unique result
13、ActiveRecord.find(User.class, "age>? and age<?", 2, 5);// return list
14、ActiveRecord.get(User.class, "path='best_guy'"); //return a unique result
15、String hql1 = "from User u inner join u.department d where d=?";
16、ActiveRecord.find(hql1, 1);// return list
17、String hql2 = "from User u inner join u.department d where d=? and u.role=?";
18、ActiveRecord.get(hql2, 1, "manager");//return a unique result
[/code]

其中
0)、ActiveRecord由独立项目的其它公共组件项目提供
1)、ActiveRecord提供静态方法,ActiveRecord底层采用Hibernate API实现CRUD,支持JPA语义
2)、ActiveRecord通过某种方式自动寻获Spring Web AppContext下的Hibernate SessionFactory
3)、实体类使用jpa的annotation采用@Entity标注,以减少开发代码量(code=java,xml,...)
4)、ActiveRecord能够[b]自动识别[/b]从事先指定package,判断哪些类加注了@Entity。比如com.xxx.domain,并通知给Hibernate
5)、ActiveRecord在Web Action中被使用,[b]去掉Bo、Dao层[/b],需要事务时,考虑直接把事务架到Action方法上

早先很多人习惯使用static的方法(函数)来编程,当时这种方法给人的感觉是“不专业”
但是现在反过来看看,[b]是否在很多应用上(特别是web应用方面),这样的方式方式是否更方便?[/b]

因为JPA/Hibernatge的承诺,领域逻辑就可以直接在Domain类完成了
(Domain类可以根据ref navigation、ActiveRecord 2种方式获取想要的对象)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值