相关疑难解决方法(0)

在Java中使用Enum作为单例的最佳方法是什么?

基于SO问题编写的最佳单例实现在Java中 - 即使用枚举创建单例 - 有什么区别/优点/缺点(构造函数省略)

public enum Elvis {
    INSTANCE;
    private int age;

    public int getAge() {
        return age;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后打电话 Elvis.INSTANCE.getAge()

public enum Elvis {
    INSTANCE;
    private int age;

    public static int getAge() {
        return INSTANCE.age;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后打电话 Elvis.getAge()

java singleton

85
推荐指数
4
解决办法
8万
查看次数

如果我使用单例类进行数据库连接,一个用户可以为每个人关闭连接吗?

我写了一个单例类来获取数据库连接.

现在我的问题是:假设有100个用户访问该应用程序.如果一个用户关闭了连接,对于其他99个用户,是否会关闭连接?

这是我的示例程序,它使用单例类来获取数据库连接:

public class GetConnection {

    private GetConnection() { }

    public Connection getConnection() {
        Context ctx = new InitialContext();
        DataSource ds = ctx.lookup("jndifordbconc");
        Connection con = ds.getConnection();
        return con;
    }

    public static  GetConnection   getInstancetoGetConnection () {
        // which gives GetConnection class instance to call getConnection() on this .
    }
}
Run Code Online (Sandbox Code Playgroud)

请指导我.

java design-patterns jdbc

16
推荐指数
2
解决办法
8万
查看次数

我可以将NHibernate的AdoNetTransactionFactory与分布式事务一起使用吗?

我正在处理与Wiber服务中的NHibernate和分布式事务相关的奇怪问题.有关更多详细信息,请参阅导致'服务器无法恢复事务的死锁'与NHibernate和分布式事务.

似乎解决我的问题的一件事是使用NHibernate的AdoNetTransactionFactory,而不是AdoNetWithDistributedTransactionsFactory.

我相信AdoNetWithDistributedTransactionsFactory涉及使NHibernate的第二级缓存机制正常工作,但我们没有使用它.使用AdoNetTransactionFactory与分布式事务有什么(如果有的话)存在其他问题?

谢谢你的时间!

nhibernate distributed-transactions

7
推荐指数
1
解决办法
1084
查看次数

如果不存在新的Java DB如何创建?

 conn = DriverManager.getConnection("jdbc:derby:mydatabase;create=true",props);
Run Code Online (Sandbox Code Playgroud)

这行会不会让我的DB在每次执行时被覆盖?如果它将如何创建数据库一次,从那以后只使用它?

java database

5
推荐指数
1
解决办法
1567
查看次数

缓存JDBC连接

我有一个小型的电子商务应用程序,它依赖于数据库.我已经看到了它的一些性能问题,主要是建立与数据库的连接.我不是DBA,也不是任何其他深层数据库知识 - 但我知道缓存连接而不是一直建立新连接是有意义的.

下面是我获取连接的方法:

public Connection getConnection() throws SQLException, ClassNotFoundException  {
    Class.forName("com.mysql.jdbc.Driver"); 
    con=DriverManager.getConnection("jdbc:mysql://182.31.456.32:3306/"+database+"",""+username+"",""+password+""); 
   // stm=con.createStatement(); 
    return con;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 如何轻松缓存当前连接并重用它而不是使用JDBC/Java创建新连接?

谢谢.

java mysql tomcat servlets jdbc

3
推荐指数
1
解决办法
1854
查看次数