有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

hibernate如何加载Java应用程序中常用的全局设置

1)在我的应用程序中,我们有一个表,其中存储了大量用于每个功能的一些设置细节。基本上,此表中设置了一些条件,并进行了检查

现在我们正在做的是时不时地进行DB调用,以获取详细信息并检查条件。这导致在相同条件下出现大量DB调用和重复调用。此表中有相当多的条件记录。我们需要改变这一点,使其表现更好

2)在我以前的项目中,我也有同样的需求,我们有一个配置表,在其中配置这些设置,在那里我们实现了它,就像在应用程序启动时从表中加载配置并将它们存储在系统中一样。setProperty(名称、值)。。以后再使用系统。getProperty(名称)来检索它。如果更改了任何设置,我们将在其系统属性中更新此设置。这很有魅力

然而,在我目前的情况下(上面的第1点),我不认为我的prev方式是最好的方式,因为表中有很多记录都有很多列。 有人能提出一种在Java中实现这种行为的方法吗?我能想到的其中一些是

1)使用系统。就像我解释的那样。 2) 使用EHCache-standalone或hibernate之类的缓存(就像我们使用hibernate一样)

有没有更好的方法来存储应用程序的全局设置以避免DB调用


共 (1) 个答案

  1. # 1 楼答案

    使用Ehcache的最佳方法(但我从未实现过)。您不应该使用系统属性,因为它可能会导致与其他系统属性冲突。 我是如何做到的在我的例子中,我创建了一个bean类,它的属性是你的表列,比如autoid、name、address、mobile

    public Map<Integer, PersonBean> getTag()
    {
         Map<Integer, PersonBean> map= new HashMap<Integer, PersonBean>();
         Connection conn =getConnection();
         Statement st=null;
         ResultSet rs=null;
        try
        {
            String sql = "select autoid,name, address, mobile from person";//person table
             st =  conn.createStatement();
    
    
             rs = st.executeQuery(sql);
            while(rs.next()){
                int tagid=rs.getInt("autoid");
                String name=rs.getString("name");
                String address=rs.getString("address");
                String mobile=rs.getString("mobile");
                PersonBean tagdeatilbean= new PersonBean(auotoid,name, address, mobile);
                map.put(rs.getInt("autoid"), tagdeatilbean);
            }
            return map;
        }
    
         catch (SQLException e) {
    
        }
        finally
        {
    
        }
    }
    

    和豆类

    public class PersonBean 
    {
        private int autoid;
        private String name;
        private String address;
        private String mobile;
        public PersonBean(int autoid, String name, String address, String mobile)
        {
        this.autoid=autoid;
        .....
        ....
        }
    
        //setter
        //getter
    }
    

    如果这是web应用程序,则可以在init方法中加载此缓存映射,并根据映射中行的autuid调用该值