'hsqldb'에 해당되는 글 5건
- 2011.02.11 HSQLDB
- 2010.08.16 Eclipse에서 Ant로 HSQLDB 사용하기
- 2009.08.08 Spring 2 + JPA + Tomcat
- 2009.06.10 JPetStore 설치 - iBatis
- 2009.04.06 Grails - 서버 재시작시 데이터 삭제되지 않게 하기
http://hsqldb.org/doc/2.0/guide/running-chapt.html
1. HyperSQL Database 에는 데이터를 저장하는 형태에 따라 세가지 종류의 catalog가 있다.
2. 데이터에 접근하는 방식은 두가지가 있다.
2.1. In-Process 방식
2.2. Server Modes
2.2.1. HyperSQL HSQL Server
2.2.2. HyperSQL HTTP Server
2.2.3. HyperSQL HTTP Servlet
2.2.4. Database Server에 접근하는 방법
3. 데이터베이스 종료 시키기
반드시 SHUTDOWN 명령이나 쿼리를 실행시켜서 종료시킬 것.
아니면 연결 문자열에 속성을 지정한다. 1
In-Process, file: 카타로그로 실행시킨 경우 shutdown으로 정상종료시키지 않으면 script 파일에 기록되지 않는다.
1. HyperSQL Database 에는 데이터를 저장하는 형태에 따라 세가지 종류의 catalog가 있다.
- mem:
- file:
- res:
2. 데이터에 접근하는 방식은 두가지가 있다.
2.1. In-Process 방식
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "SA", "");
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");
2.2. Server Modes
2.2.1. HyperSQL HSQL Server
java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:mydb --dbname.0 xdb
java -cp hsqldb.jar org.hsqldb.server.Server --database.0 mem:mydb --dbname.0 xdb
2.2.2. HyperSQL HTTP Server
java -cp hsqldb.jar org.hsqldb.server.WebServer --database.0 file:mydb --dbname.0 xdb
2.2.3. HyperSQL HTTP Servlet
2.2.4. Database Server에 접근하는 방법
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "SA", "");
Connection c = DriverManager.getConnection("jdbc:hsqldb:http://localhost/xdb", "SA", "");
3. 데이터베이스 종료 시키기
반드시 SHUTDOWN 명령이나 쿼리를 실행시켜서 종료시킬 것.
아니면 연결 문자열에 속성을 지정한다. 1
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb;shutdown=true", "SA", "");
In-Process, file: 카타로그로 실행시킨 경우 shutdown으로 정상종료시키지 않으면 script 파일에 기록되지 않는다.
- 이 옵션은 아마 1.8부터 될거야. [본문으로]
- Eclipse에서 Ant로 HSQLDB 사용하기
- 日常茶飯事
- 2010. 8. 16. 20:29
간단한 테스트 데이터베이스로 사용하기에 이놈보다 좋은게 어디있겠냐.
예전 Tutorial에서 가져옴.
원출처는 여기
예전 Tutorial에서 가져옴.
원출처는 여기
<project name="sample.pantarei" default="usage" basedir="."> <property file="build.properties"/> <path id="master.classpath"> <!-- <pathelement location="res/devlib/hsqldb.jar"/> --> <fileset dir="${devlib.dir}"> <include name="**/*.jar" /> </fileset> </path> <target name="usage"></target> <target name="hsql.startup"> <java classname="org.hsqldb.Server" classpathref="master.classpath" fork="true"> <arg value="-database.0" /> <arg value="res/db/data/${db.name}" /> <arg value="-dbname.0" /> <arg value="${db.name}" /> </java> </target> <target name="hsql.shutdown"> <sql driver="${db.driver}" classpathref="master.classpath" url="${db.url}/${db.name}" userid="${db.username}" password="${db.password}"> SHUTDOWN; </sql> </target> <target name="hsql.manager"> <java classname="org.hsqldb.util.DatabaseManager" classpathref="master.classpath" fork="true"/> </target> <target name="printData"> <echo message="PRINT DATA : ${db.url}/${db.name}"/> <sql driver="${db.driver}" classpathref="master.classpath" url="${db.url}/${db.name}" userid="${db.username}" password="${db.password}" onerror="continue" print="true"> SELECT * FROM products; </sql> </target> </project>
devlib.dir=res/devlib
db.driver=org.hsqldb.jdbcDriver
db.url=jdbc:hsqldb:hsql://localhost
db.name=baseball
db.username=sa
db.password=
db.driver=org.hsqldb.jdbcDriver
db.url=jdbc:hsqldb:hsql://localhost
db.name=baseball
db.username=sa
db.password=
- Spring 2 + JPA + Tomcat
- 日常茶飯事
- 2009. 8. 8. 13:24
- 스프링 2와 JPA 시작하기
* 도메인 분석을 수행함
* 비즈니스 객체와 서비스를 구현함
* 비즈니스 객체에 대한 단위 테스트
* 스프링 JPA를 사용해 비즈니스 객체에 데이터 접근 코드 쉽게 추가
* 스프링 DAO(Data Access Object)를 사용해 서비스 구현
* DB2® Express-C와 연동한 서비스에 대한 통합 테스트 코드 작성
* 사용자 인터페이스에 기반을 둔 스프링 Model-View-Controller(MVC)를 위한 컨트롤러 생성
* 사용자 인터페이스를 위한 뷰(view) 디자인
* 애플리케이션을 위한 배치 가능한 WAR 파일 생성
* 아파치 톰캣(Apache Tomcat) 서버에 애플리케이션을 구성하고 배치함
- 도메인 모델 분석
직원엔터티에서 주소를 분리한다.
오퍼레이션을 정의한다.
Employee.java 에서 setEmpid() 를 제거한다.(JPA 에 의해서 관리된다.)
- JPA 어노테이션에 대한 설명
Employee와 Address 인스턴스가 일대일 관계(@OneToOne(casecade=CascadeType.ALL)) 어노테이션으로 기술되어)를 맺고 있는 것을 기억하자. 이 어노테이션은 Employee 객체를 대상으로 하는 모든 엔티티 매니저 오퍼레이션이 그 객체와 관련된 Address 객체에도 영향을 준다는 것을 의미한다. 이 말은 RDBMS에 Employee 기록을 추가하는 어느 작업이든지 그에 대응하는 Address 기록도 만들어지는 것을 뜻한다. 이것은 RDBMS에서 종종 찾을 수 있는 연속되는 삭제 참조 무결성 개념의 확장된 개념이라 보면 되겠다.
- HSQLDB 이용, DB2 로 변경
- RDBMS로 수행하는 DAO 통합 테스트 작성하기
- SpringMVC
- 스프링 2를 위해 톰캣 준비하기
1. 톰캣에 스프링 2 클래스로더 추가 : server/lib/spring-tomcat-weaver.jar, META-INF/context.xml
2. 톰캣에 스프링 2 컨텍스트 로더 리스너(context loader listener) 추가
3. 톰캣에 DB2 JDBC 드라이버 복사
4. 톰캣을 위해 JNDI DB2 데이터소스 구성
- 참고
스프링 2와 JPA 시작하기 - 에러해결
Spring -JPA-Tomcat
[todo] 이거 설정만 바꾸면 다른 JPA 구현체로 바꿀수 있나?(2.0에서는 다른 구현체를 지원하지 않음. 2.5 는 에러남. 결국은 에러를 해결해야 하는데...)
[todo] 직접 해보기...금방될거야
* 도메인 분석을 수행함
* 비즈니스 객체와 서비스를 구현함
* 비즈니스 객체에 대한 단위 테스트
* 스프링 JPA를 사용해 비즈니스 객체에 데이터 접근 코드 쉽게 추가
* 스프링 DAO(Data Access Object)를 사용해 서비스 구현
* DB2® Express-C와 연동한 서비스에 대한 통합 테스트 코드 작성
* 사용자 인터페이스에 기반을 둔 스프링 Model-View-Controller(MVC)를 위한 컨트롤러 생성
* 사용자 인터페이스를 위한 뷰(view) 디자인
* 애플리케이션을 위한 배치 가능한 WAR 파일 생성
* 아파치 톰캣(Apache Tomcat) 서버에 애플리케이션을 구성하고 배치함
- 도메인 모델 분석
직원엔터티에서 주소를 분리한다.
오퍼레이션을 정의한다.
Employee.java 에서 setEmpid() 를 제거한다.(JPA 에 의해서 관리된다.)
- JPA 어노테이션에 대한 설명
Employee와 Address 인스턴스가 일대일 관계(@OneToOne(casecade=CascadeType.ALL)) 어노테이션으로 기술되어)를 맺고 있는 것을 기억하자. 이 어노테이션은 Employee 객체를 대상으로 하는 모든 엔티티 매니저 오퍼레이션이 그 객체와 관련된 Address 객체에도 영향을 준다는 것을 의미한다. 이 말은 RDBMS에 Employee 기록을 추가하는 어느 작업이든지 그에 대응하는 Address 기록도 만들어지는 것을 뜻한다. 이것은 RDBMS에서 종종 찾을 수 있는 연속되는 삭제 참조 무결성 개념의 확장된 개념이라 보면 되겠다.
- HSQLDB 이용, DB2 로 변경
- RDBMS로 수행하는 DAO 통합 테스트 작성하기
- SpringMVC
public class EmpDetailsController extends AbstractCommandController{ public EmpDetailsController() { setCommandClass(EmployeeDetailsCommand.class); } private EmployeeService employeeService; public void setEmployeeService(EmployeeService employeeService) { this.employeeService = employeeService; } protected ModelAndView handle(HttpServletRequest req, HttpServletResponse resp, Object cmd, BindException ex) throws Exception { EmployeeDetailsCommand ecmd = (EmployeeDetailsCommand) cmd; Employee emp = employeeService.findById(ecmd.getEmpID()); return new ModelAndView("empdetails", "emp", emp); }}
- 스프링 2를 위해 톰캣 준비하기
1. 톰캣에 스프링 2 클래스로더 추가 : server/lib/spring-tomcat-weaver.jar, META-INF/context.xml
2. 톰캣에 스프링 2 컨텍스트 로더 리스너(context loader listener) 추가
3. 톰캣에 DB2 JDBC 드라이버 복사
4. 톰캣을 위해 JNDI DB2 데이터소스 구성
- 참고
스프링 2와 JPA 시작하기 - 에러해결
Spring -JPA-Tomcat
[todo] 이거 설정만 바꾸면 다른 JPA 구현체로 바꿀수 있나?(2.0에서는 다른 구현체를 지원하지 않음. 2.5 는 에러남. 결국은 에러를 해결해야 하는데...)
[todo] 직접 해보기...금방될거야
- JPetStore 설치 - iBatis
- 日常茶飯事
- 2009. 6. 10. 00:35
- JPetStore-5.0/build/wars/jpetstore.war 로 배포할 수 있다.
또는
- Eclipse에서 구동시키기
- 기본 설정이 hsqldb로 되어 있으므로 추가적인 설정이나 데이터베이스 없이 바로 구동할 수 있다.
- 다른 데이터베이스로 변경하는 경우에는
또는
- Eclipse에서 구동시키기
- Dynamic Web Project 를 생성한다.
- Import
src : JavaSource
web : WebContent
lib : WebContent/WEB-INF/lib
- 기본 설정이 hsqldb로 되어 있으므로 추가적인 설정이나 데이터베이스 없이 바로 구동할 수 있다.
- 다른 데이터베이스로 변경하는 경우에는
- JPetStore-5.0/src/ddl/ 의 스크립트를 사용하여 테이블을 생성하고 데이터를 입력한다.
- WEB-INF/classes/properties/database.properties 를 설정한다.
- Item.xml에서 getItem의 쿼리를 수정한다. : itemid 가 명확하지 않아 에러가 발생하므로 v.ITEMID로 변경한다.
- Grails - 서버 재시작시 데이터 삭제되지 않게 하기
- 日常茶飯事
- 2009. 4. 6. 00:35
> grails prod run-app //prodDb.script 에 데이터가 저장된다.
grails-app/conf/DataSource.groovy에서 development 설정을 production 과 동일하게 둔다.hsqldb를 사용하므로 파일에 저장되도록 한다.
dbCreate = "create-drop" //update 로 수정한다.
url = "jdbc:hsqldb:mem:devDB" //jdbc:hsqldb:file:devDB;shutdown=true 로 수정한다. devDB.script 에 데이터가 저장된다.
url = "jdbc:hsqldb:mem:devDB" //jdbc:hsqldb:file:devDB;shutdown=true 로 수정한다. devDB.script 에 데이터가 저장된다.
또는 서버 시작시 데이터를 넣는다.
conf/BootStrap.groovy
class BootStrap {
def init = { servletContext ->
new Book(author:"Stephen King",title:"The Shining").save()
new Book(author:"James Patterson",title:"Along Came a Spider").save()
}
def destroy = {
}
}
def init = { servletContext ->
new Book(author:"Stephen King",title:"The Shining").save()
new Book(author:"James Patterson",title:"Along Came a Spider").save()
}
def destroy = {
}
}
- 참고 : each문 사용
class BootStrap {
def init = { servletContext ->
if(GrailsUtil.environment == "development"){
new Tag(name:"Work").save()
new Tag(name:"Home").save()
new Tag(name:"Study").save()
def admin = new User(userId:"admin", password:"grails").save()
def testUser = new User(userId:"test", password:"test").save()
def testUser2 = new User(userId:"testA", password:"test").save()
(1..11).each{
new Entry(title:"$it", content:"content$it", user:admin).save()
}
new Entry(title:"test", content:"content", user:testUser).save()
new Entry(title:"123", content:"456", user:testUser2).save()
}
}
def destroy = {
}
}
Recent comment