ActiveRecord能不能也支持显式的字段--属性值对应

max佩恩 发布于 2012/12/29 00:28
阅读 405
收藏 1

@JFinal 你好,想跟你请教个问题:

那个ActiveRecord能不能也支持显式的字段--属性值对应,如下:

public class Rank extends Model<Rank> {
    public static final Rank dao = new Rank();

    public String getUserID() {
        return UserID;
    }

    public void setUserID(String userID) {
        UserID = userID;
    }

    public String UserID;

}

我想得到数据库UserID字段值,只能用rank_model.getStr("UserID"),而不能使用rank_model.UserID。能不能让UserID属性也得到自动赋值

加载中
0
JFinal
JFinal

引用来自“max佩恩”的答案

关于在Model里加个DataSource的属性建议,波总如何考虑?这样Model就自己知道应该和哪个数据源打交道,而不是每次都要通过db.java显式的写上数据源参数
如果不同的Model引用不同的数据源,就需要引入IOC,不利于极速开发,权衡之下,目前只在Db + Record支持多数据源。其实一般的项目一个主数据源就可以了。如果项目规模再扩大,可以将项目拆分成多个小型服务,每个服务中使用一个主数据源,这样既能保障极速开发,又能避免相应的麻烦。
JFinal
JFinal
回复 @27号 : 根据大项目各部分的独立性进行服务划分,尽量让服务之间的耦合最少,事务依赖于数据库来做,不使用session也就不存在session同步的问题。状态数据可以存到集中式的缓存中,也可以存在数据库中
max佩恩
max佩恩
其实80%的项目确实是只访问一个数据库的,但出于对Jfinal的爱,希望它能支持的特性更多,适应面更广一些
27号
27号
如何做成小型服务,并且要能保证事务?或者保证session同步?
0
27号
27号
这个关注一下。
0
max佩恩
max佩恩
其实我是希望我只写 public String UserID; 不写那些Set/Get,AR也能自动给其赋值
0
max佩恩
max佩恩

而且DB.Java中支持多数据源操作的都是需要Sql语句,无法使用Record。

那些deleteByID都是不支持多数据源的

另外还建议能不能Model里的操作也支持多数据源,如配置一个DataSource的属性。不要让Model操作只能使用主数据源

0
JFinal
JFinal

引用来自“max佩恩”的答案

而且DB.Java中支持多数据源操作的都是需要Sql语句,无法使用Record。

那些deleteByID都是不支持多数据源的

另外还建议能不能Model里的操作也支持多数据源,如配置一个DataSource的属性。不要让Model操作只能使用主数据源

Db.java 中与 Record配合的方法也是支持多数据源的
0
JFinal
JFinal

楼主的需求可以办到,这样写代码:

public class Rank extends Model<Rank> {
  public static final Rank dao = new Rank();
  public String getUserID() {
    return getStr("UserID");
  }
  
  public void setUserID(String userID) {
    set("userID", userID);
  }
}
    如上例,无需定义属性更省代码。


0
max佩恩
max佩恩

发现我是受了C#的影响,C#的属性定义在这里就占了便宜

string UserID{ get; set; }太方便了

相比之下,Java的代码很麻烦,老是多出个Get Set

 
JFinal
JFinal
用 JFinal 就没有getter、setter、attribute,比C#还省代码,因为C#还需要 attribute
0
max佩恩
max佩恩

Db.java 中与 Record配合的方法似乎少了Delete

当然,根据ID来删除的Sql语句其实很容易写

max佩恩
max佩恩
回复 @JFinal : 没找到哪个Delete的方法带有数据源参数呢?
max佩恩
max佩恩
对于普通开发者,尤其是在国内占大多数系统的MIS来说,强类型才是比较友好的,Java本身的强类型最好还是能利用上。 其实我是建议Jfinal最好能强、弱都支持
JFinal
JFinal
回复 @max佩恩 : 用ruby、python开发项目的时候,每一个变量都是弱类型,项目仍能正常进行开发。弱类型带来的不安全感习惯就好,否则动态语言开发者更没法写代码了 :)
max佩恩
max佩恩
getStr("UserID"); 这种属于弱类型,字段多容易写错,企业开发有难度,因为很多行业里的专业术语在系统中的字段定义很长。如果是 rank.UserID 这样的强类型则会很安全,而且IDE还可以提供tip信息
JFinal
JFinal
Db + Record 早已有 delete 方法 :)
0
max佩恩
max佩恩
关于在Model里加个DataSource的属性建议,波总如何考虑?这样Model就自己知道应该和哪个数据源打交道,而不是每次都要通过db.java显式的写上数据源参数
0
27号
27号
这个主题很感兴趣。不久的将来可能会用到多数据源。
27号
27号
回复 @max佩恩 : 受教了,谢谢!
max佩恩
max佩恩
事务采用二段式提交的办法,所有操作都正常完成才把所有事务提交 EJB提供的服务似乎也是如此的二段式提交 当然,这里并没有严格意义的“事务”,象银行,其实还要依赖日清月结,跨行结算等再来事后保障“事务”
27号
27号
回复 @max佩恩 : 那如何保证事务的呢?
max佩恩
max佩恩
我在C#环境已经碰到N次多数据源问题了,采用的是封装NHibernate,并在实体类项目中加入数据源信息。也就是说有N个数据源,就有N个实体类项目。
返回顶部
顶部