在不使用getter的情况下在关系数据库中存储属性

时间:2015-11-10 17:50:42

标签: java oop relational-database

我最近读到过没有在Java中使用getter和setter(例如When are getters and setters justified)。

我不知道这实际上是否是进行面向对象编程的最佳方式。无论如何,假设我的代码中没有使用getter,我如何在关系数据库中存储数据?两年前我开始使用Java时,我常常做类似以下的事情:

public void createTitle(Title title) {

    // ... some code here ...

    String sql = "INSERT INTO titles (title_id, name) "
            + "VALUES (TITLES_SEQ.NEXTVAL,?)";
    preparedStatement = connection.prepareStatement(sql);
    preparedStatement.setString(1, title.getName()); // Here is the getter
    preparedStatement.executeUpdate();

    // ... other code here ...
}

如果我没有title getter,如何在我的关系数据库中保存name及其属性(在本例中为title.getName())?这只是一个例子,但我希望它有意义。

一些相关的讨论:

2 个答案:

答案 0 :(得分:0)

我不知道为什么......但是你必须如何将标题的属性名称设为public并通过点符号e.G title.name

访问它

答案 1 :(得分:0)

为避免使用getter / setter,只需将变量设为public(或保护,视具体情况而定),以便dot-accessors能够在其位置工作。

title.name代替title.getName()

硬币的两面是:

有人说公共字段很糟糕,暴露太多,另一个说简单对象保持简单并且不需要getter / setter来完成同样的事情。

如果您非常需要禁止设置变量(只读),那么将其私有化并制作一个getter是可行的方法。 对于只写变量,有一个类似的过程,但只有setter而没有getter。

根据我的个人经验,如果我可以在不向最终用户暴露危险副作用的情况下暴露变量,那么我继续将该字段公之于众。否则,我会尽可能地关闭该字段的访问权限。