Japanese Configuration

Last updated by admin 4 years ago

??

?????

{excerpt:hidden=true}Programmatic start-up configuration can be added a Grails application by creating one or many "BootStrap" classes in the "%PROJECT_HOME%grails-appconf" directory: {excerpt} Grails?????????????????????????????"BootStrap"????"%PROJECT_HOME%grails-appconf"???????????????????????
class ExampleBootStrap {

def init = { servletContext -> // init app } def destroy = { // destroy app } }

{excerpt:hidden=true}The "init" closure (if it exists) is called on application load and the "destroy" closure (again if it exists) on application exit {excerpt} "init"???????(?????)?????????"destroy"???????(?????)????????????
It is not guaranteed that destroy will be called unless the application exits gracefully (for example by using the application server's shutdown command) so don't rely on it too much

?????????

{excerpt:hidden=true}There are two alternatives when it comes to configuring DataSources for Grails (effective Grails 0.3) {excerpt} Grails?????????????2??????????(Grails 0.3?????){excerpt:hidden=true}
  1. Use the JDBC DataSource by defining (test/dev/prod) DataSource under grails-app/conf folder
  2. Use JNDI dataSource in the spring/resources.xml folder  of the application. Normally you would use this if you want to re-use the existing dataSource settings of the J2EE Server you are running your Grails application on.{excerpt}
  3. grails-app/conf????????(test/dev/prod) DataSource?????JDBC????????????
  4. ?????????spring/resources.xml??JNDI dataSource??????Grails???????????????J2EE??????????????????????????

grails-app/conf?????????????????? {excerpt:hidden=true}Specifying DataSource in the grails-app/conf folder  {excerpt}

{excerpt:hidden=true}Data source names should end with "DataSource". If no (available) data sources are found Grails will start with an in-memory HSQLDB database with the database schema created at run-time. There are four required String properties: {excerpt} ?????????"DataSource"????????????????????????????????????????????HSQLDB?????????????????????????????
  • url - ????????JDBC url
  • driverClassName - JDBC?????????
  • username - ????
  • password - ?????
class HsqlDataSource {
   String dbCreate = "update"
   String url = "jdbc:hsqldb:hsql://localhost"
   String driverClassName = "org.hsqldb.jdbcDriver"
   String username = "sa"
   String password = ""
}

?? {excerpt:hidden=true}Environments {excerpt}

{excerpt:hidden=true}By default Grails creates 3 data sources called {{DevelopmentDataSource}} , {{ProductionDataSource}} and {{TestDataSource}}. These can be adapted to each target environment. When you run Grails you can then tell it what data source to use when specifying the environment: {excerpt} Grails???????? {{DevelopmentDataSource}} , {{ProductionDataSource}} , {{TestDataSource}} ???????????????????????????????????????????????Grails??????????????????????????? {excerpt:hidden=true}
code: null
grails run-app // ??????????????"development"?????? runs with the default "development" data source grails dev run-app // "development"????????? runs with the "development" data source grails prod run-app // production????????? runs with the production data source grails test run-app // test????????? runs with the test data source
code: null
{excerpt}
grails run-app // ??????????????"development"??????
grails dev run-app // "development"?????????
grails prod run-app // production?????????
grails test run-app // test?????????
{excerpt:hidden=true}These options are also available when packaging the application as a WAR file, although in this case the default data source used is _production_: {excerpt} ??WAR???????????????????????????????????????????????? production ????????????????????: {excerpt:hidden=true}
code: null
grails war // "production"????????????????????? Packages the application with the "production" data source grails dev war // "development"????????????????????? Packages the application with the "development" data source grails prod war // "production"????????????????????? Packages the application with the "production" data source
code: null
{excerpt}
grails war  // "production"?????????????????????
grails dev war   // "development"?????????????????????
grails prod war  // "production"?????????????????????
{excerpt:hidden=true}If you have other environments you need to target you can create another data source that follows the convention. For example {{BookDataSource}} and then start Grails app as follows: {excerpt} ??????????????????????????????????????????????{{BookDataSource}} ????????????????????????
grails -Dgrails.env=book run-app

???????????? {excerpt:hidden=true}Connection Pooling {excerpt}

{excerpt:hidden=true}By default org.apache.commons.dbcp.BasicDataSource is used, all of its properties can be added to data source classes. If you want to disable connection pooling create a "pooling" property and set it to false. This will use org.springframework.jdbc.datasource.DriverManagerDataSource instead. Properties configured on Grails data sources that are not supported by DriverManagerDataSource will silently be ignored. {excerpt} ????????org.apache.commons.dbcp.BasicDataSource ???????????????????????????????????????????????????????????"pooling"??? ???????false?????????????? org.springframework.jdbc.datasource.DriverManagerDataSource??????? DriverManagerDataSource?????????????????????????????
boolean pooling = false

??????????

{excerpt:hidden=true}By default Grails is configured to attempt to update or create the database on application load this is configured with the "dbCreate" property: {excerpt} Grails????????????????????"dbCreate"????????????????????????????????????????????
String dbCreate= "update"
{excerpt:hidden=true}If this property is removed the database will have to be created manually or by a separate process. Other possible values for this property are "create" and "create-drop". {excerpt} ??????????????????????????????????????????????????????????"create" ? "create-drop"???

SQL????

{excerpt:hidden=true}To enable SQL logging in your grails application add the following property to the Grails data source file: {excerpt} Grails?????????SQL???????????????????????????????
def logSql = true

??????????????

{excerpt:hidden=true}To set a custom dialect for Hibernate to use add a 'dialect' property to the data source referencing the dialect class to use: {excerpt} Hibernate??????????????????????'dialect'????????????????????????????????????
def dialect = MySQLDialect.class

???????????????

{excerpt:hidden=true}Grails GORM is based on the Hibernate object/relational mapping framework. Therefore Grails supports all Hibernate databases. {excerpt} Grails GORM? Hibernate ??????/??????? ????? ???????????????????Hibernate?????????????????????????????

Hibernate is regularly tested with the following SQL databases:

  • DB2 7.1, 7.2, 8.1
  • HSQL DB
  • HypersonicSQL 1.61, 1.7.0, 1.7.2, 1.8
  • Microsoft SQL Server 2000
  • MySQL 3.23, 4.0, 4.1, 5.0
  • Oracle 8i, 9i, 10g
  • PostgreSQL 7.1.2, 7.2, 7.3, 7.4, 8.0, 8.1
  • SAP DB 7.3
  • Sybase 12.5 (JConnect 5.5)
  • Timesten 5.1
Hibernate has also been tested with and is believed to be compatible with current versions of:
  • Apache Derby
  • HP NonStop SQL/MX 2.0 (requires Dialect from HP)
  • Firebird (1.5 with JayBird 1.01 tested)
  • FrontBase
  • Informix
  • Ingres
  • Interbase (6.0.1 tested)
  • Mckoi SQL
  • Pointbase Embedded (4.3 tested)
  • Progress 9

MySQL???

{excerpt:hidden=true} Download the Java MySQL driver from: {excerpt} ????MySQL?Java????????????? http://www.mysql.com/products/connector/j/ {excerpt:hidden=true}Unpack the archive and copy the mysql*.jar (not the debug jar) to lib in your grails application directory. {excerpt} ??????????Grails????????? lib???????mysql*.jar(debug?jar??)???? {excerpt:hidden=true}Change the ApplicationDataSource to using your own values: {excerpt} ApplicationDataSource??????????
class ApplicationDataSource {
    boolean pooling = true
    String dbCreate = "create-drop"
    String url = "jdbc:mysql://localhost/yourDB"
    String driverClassName = "com.mysql.jdbc.Driver"
    String username = "yourUser"
    String password = "yourPassword"
}

spring/resources.xml????JNDI????????{excerpt:hidden=true}Using JNDI DataSources through spring/resources.xml{excerpt}

 ?????????????J2EE??????JNDI?????????????????????????????????????? ??"org.springframework.jndi.JndiObjectFactoryBean"????????"dataSource"??????????????Grails?grails-app/conf/??????????????????????{excerpt:hidden=true}  Normally you would use this approach if running inside a J2EE server which has its own JNDI entries for the Database already set up, so you could re-use the connection settings. If there is a bean by name "dataSource" with class "org.springframework.jndi.JndiObjectFactoryBean", Grails runtime would take this entry instead of the grails-app/conf/ datasources.{excerpt} ???resources.xml????dataSource????????????????jndiName?????????????????{excerpt:hidden=true} An example entry for dataSource bean in the resources.xml would be as following. Of course you have to change the property jndiName's value appropriately. {excerpt}

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/myDataSource" />
</bean>
{excerpt:hidden=true}Note: This feature is available since Grails 0.3 (see http://jira.codehaus.org/browse/GRAILS-272){excerpt} Note: ?????Grails0.3??????????(http://jira.codehaus.org/browse/GRAILS-272??)

h2.