基于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()
我写了一个单例类来获取数据库连接.
现在我的问题是:假设有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)
请指导我.
我正在处理与Wiber服务中的NHibernate和分布式事务相关的奇怪问题.有关更多详细信息,请参阅导致'服务器无法恢复事务的死锁'与NHibernate和分布式事务.
似乎解决我的问题的一件事是使用NHibernate的AdoNetTransactionFactory,而不是AdoNetWithDistributedTransactionsFactory.
我相信AdoNetWithDistributedTransactionsFactory涉及使NHibernate的第二级缓存机制正常工作,但我们没有使用它.使用AdoNetTransactionFactory与分布式事务有什么(如果有的话)存在其他问题?
谢谢你的时间!
conn = DriverManager.getConnection("jdbc:derby:mydatabase;create=true",props);
Run Code Online (Sandbox Code Playgroud)
这行会不会让我的DB在每次执行时被覆盖?如果它将如何创建数据库一次,从那以后只使用它?
我有一个小型的电子商务应用程序,它依赖于数据库.我已经看到了它的一些性能问题,主要是建立与数据库的连接.我不是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创建新连接?
谢谢.