我正在做Timothy Perrett的Lift In Action,这本书对数据库连接有点混乱。
令人困惑的部分是JNDI。我没有java背景,所以它有点令人困惑,道具文件也令人困惑。它有点类似于配置文件或ini文件,但仍然有很多我不明白的事情。
我找到了另一个教程: http://exploring.liftweb.net/master/index-8.html @ 8.1.2设置数据库连接
这有点不同。来自PHP背景的我更熟悉。
那有什么区别?这两种方法之间有什么优势吗?并且第二种方法不检查连接是否未建立,如何检查?或者,您是否可以提供任何代码片段来向我展示故障转移的最佳实践?
哦! load shark模式用于确保只使用一个db连接?
感谢您的时间。
编辑: 我相信连接检查是否已建立在DBVendor对象中newConnection上的数据库对象中。我对么?
答案 0 :(得分:4)
将您的数据库配置放在./src/main/resources/default.props
中,格式为:
db.class=org.postgresql.Driver
db.url=jdbc:postgresql:[//host[:port]]/database
db.user=user
db.pass=password
当然,您需要为数据库提供正确的值。
如果JNDI令人困惑,您现在可以忽略它。如果您尝试将生产应用程序配置为在应用程序服务器上运行,那么它是part of Java EE非常有用,但不是必需的。
Properties是Java中用于处理配置的古老方法。属性文件(通常名为.props
或.properties
)只是名称/值对的列表。
Lift提供了一个Props
对象,可以方便地为不同的环境提供不同的属性文件。 The wiki对其工作方式有一个很好的说明,但基本上你可以为运行模式(测试,登台,生产等),主机名和用户名的任意组合指定不同的属性。
现在,打破Tim Perrett的代码:
Database
对象配置数据源。Database
对象使用Lift的Props
对象从最适合您正在运行的系统的.props
文件中加载值。如果您只提供default.props
,则这些是将要使用的值。openOr
提供使用an H2 database的默认值。 Lift已经完成了自己的连接管理,这通常意味着每个线程有不同的数据库连接。如果无法建立连接,您将从数据访问代码中获取SQLException
。