<session-factory> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.oracledriver</property> <property name="hibernate.connection.u

Similar documents
@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Data JPA Many To Many 양방향 관계 예제

Spring Boot

슬라이드 1

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

슬라이드 1

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

Chapter 1

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

게임 기획서 표준양식 연구보고서

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri

Windows 8에서 BioStar 1 설치하기

슬라이드 1

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft Word - src.doc

Install stm32cubemx and st-link utility

슬라이드 제목 없음

13주-14주proc.PDF

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

쉽게 풀어쓴 C 프로그래밊

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

B.3 JDBC 설치 JDBC Java DataBase Connectivity 는자바에서 DBMS의종류에상관없이일관된방법으로 SQL을수행할수있도록해주는자바 API Application Program Interface 다. 이책에서는톰캣과 SQL Server 간의연결을위

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

윈도우시스템프로그래밍

( )부록

Studuino소프트웨어 설치

PowerPoint Template

PowerPoint Template

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

Endpoint Protector - Active Directory Deployment Guide

슬라이드 1

PowerPoint 프레젠테이션

슬라이드 1

01장

Microsoft PowerPoint - 04-UDP Programming.ppt

JDK이클립스

Microsoft Word - SQL튜닝_실습교재_.doc

RDB개요.ppt

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

슬라이드 1

슬라이드 1

Microsoft Word - Modelsim_QuartusII타이밍시뮬레이션.doc

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

PowerPoint 프레젠테이션

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

ISP and CodeVisionAVR C Compiler.hwp

슬라이드 1

Convenience Timetable Design

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

Microsoft PowerPoint - 안드로이드 개발 환경 구축(170411)

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

슬라이드 1

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

PostgreSQL 2 Uniersity of California at Berkeley ( ) 에서개발된관계형데이터베이스서버인 Ingres 가시초 ( 후에 Computer Associates 에인수됨 ) 1

Google SVN 계정만들기 Site : 1. 사이트접속후프로젝트호스팅선택 2. 오픈소스프로젝트검색선택

PowerPoint 프레젠테이션

Microsoft PowerPoint - 14주차 강의자료

슬라이드 1

NTD36HD Manual

09-interface.key

PowerPoint 프레젠테이션

윈도우시스템프로그래밍

4S 1차년도 평가 발표자료

1

MF5900 Series MF Driver Installation Guide

슬라이드 1

작동 원리

DBMS & SQL Server Installation Database Laboratory

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Interstage5 SOAP서비스 설정 가이드

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

MasoJava4_Dongbin.PDF

02 C h a p t e r Java

PDF_Compass_32호-v3.pdf

SBR-100S User Manual

1

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

JAVA 플랫폼 개발 환경 구축 및 활용

arcplan Enterprise 6 Charting Facelifts

비긴쿡-자바 00앞부속

WebPACK 및 ModelSim 사용법.hwp

IRISCard Anywhere 5

歯PLSQL10.PDF

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

PowerPoint Presentation

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사

<4F B8A620C0CCBFEBC7D120C8B8B7CE20C0DBBCBAC0C720B1E2C3CA2E687770>

View Licenses and Services (customer)

교육2 ? 그림

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

Transcription:

JBoss Hibernate Tools 를이용한 Entity 코드생성하기 OOP 개발교육의중심오라클자바커뮤니티 http://ojc.asia DDL 코드가작성되어있거나운영중인서비스를업그레이드하는경우에는 ORM 개발이라고하더라도 Top-down 방식의 개발방법론만을고집하지말고때에따라서는전통적인방식의접근이편리할것이다. 데이터베이스의이미존재하는테이블을바탕으로리버스엔지니어링을통해 JPA 등에서사용할모델 Entity 코드를생성해보자. 테이블이많을수록자동생성되는코드를이용하면개발의생산성을높일수있을것이다. 1. 이클립스설치 최신 STS 에서는버전문제로제대로작동하지않을수있다. 따라서 eclipse mars 1 버전을사용하겠다. 사실코드생성용으로별도의이클립스를사용함이여러모로편리하다. 주의 : 이클립스버전에맞는플러그인이존재하는지확인하고작업함을권장합니다. 다음사이트에서 OS 환경에맞는이클립스를다운로드후설치하고기동한다. http://www.eclipse.org/downloads/packages/ 2. 플러그인설치 1. Help > Eclipse Marketplace 창을띄운후 'jboss' 키워드로검색한다. 2. JBoss Tools 4.3.0.Final 의 install 버튼을클릭한다. 3. 설치전체체크를해제하고오직 Hibernate Tools 항목만을체크하고설치한다. 플러그인설치가끝나면이클립스의재시작이필요하다. 3. 결과저장용프로젝트생성 생성되는파일을저장할프로젝트가필요하다. 간단히 Dynamic Web Project 로하나만든다. 주의 : Java Project 로만들지않는다. 시도해보는것을말리지는않겠다. 4. 데이터베이스연결정보파일생성 프로젝트자바루트 src 폴더에다음내용으로파일을만들자. 사실위치가중요하지는않다. hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>

<session-factory> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.oracledriver</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.0.27:1521:onj</property> <property name="hibernate.connection.username">scott</property> <property name="hibernate.connection.password">tiger</property> <property name="hibernate.dialect">org.hibernate.dialect.oracle10gdialect</property> <property name="hibernate.default_schema">scott</property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration> 5. 데이터베이스연결드라이버 오라클데이터베이스라면 WebContent/WEB-INF/lib 폴더에 OracleDriver 인 ojdbc6.jar 파일을복사해넣는다. 다른데이터베이스라면적절히 hibernate.cfg.xml 파일의내용을바꾸고그에맞는드라이버를사용하면된다. 6. Hibernate Perspective 하이버네이트퍼스펙티브로변경한다. 왼쪽의 Hibernate Configurations 창에서마우스오른쪽버튼 > Add Configuration... 을클릭하면다음창이뜬다.

1. Browse 버튼을클릭하여미리만들어놓은프로젝트를선택한다. 2. New 버튼을클릭하여 Database connection 을설정한다. 자세한설정방법은생략한다. 3. Setup 버튼을클릭하여미리만든 hibernate.cfg.xml 파일을선택한다. 연결설정작업이다되었다. 창하단에 OK 버튼을누른다. Hibernate Configuration 뷰를보면 hibernate 라는항목이추가된것이보일것이다. Database 부분을눌러서밑으로확장해들어가면 scott 계정으로접근할수있는테이블목록이보일것이다. 테이블정보가보인다는것은설정작업이잘된것을의미한다. 7. Code Generation 이제코드생성을해보자. 다음그림을참고하여 Hibernate Code Generation 메뉴를선택한다.

새로뜬창에서 New launch configuration 아이콘을클릭한다. 다음그림을참고하여설정작업을진행한다.

1. Output directory : 생성되는파일이저장되는위치가된다. 2. 설정하지않으면계정의모든테이블을대상으로작업이진행된다. 테이블몇개만을대상으로 Entity 모델객체를얻고자한다면설정할필요가있다. 참고로만들어지는리버스엔지니어링파일내용은다음과같다. hibernate.reveng.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" > <hibernate-reverse-engineering> <table-filter match-name="dept"/> <table-filter match-name="emp"/> </hibernate-reverse-engineering> 다음으로 Exporters 탭메뉴에서다음과같이설정한다.

끝으로하단에 Run 버튼을클릭하면리버스엔지니어링작업이진행되고결과적으로지정된프로젝트의지정된폴더에테이블과 대응하는 Entity 모델객체.java 파일들이만들어진다. 8. 작업결과 작업결과예시는 scott 계정에테스트용테이블인 Dept 와 Emp 에대응하는 Entity 모델객체의.java 파일이다. Dept.java // default package // Generated 2016. 2. 12 오후 5:39:01 by Hibernate Tools 4.3.1.Final import java.util.hashset; import java.util.set; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.id; import javax.persistence.onetomany; import javax.persistence.table; /** * Dept generated by hbm2java */ @Entity @Table(name = "DEPT") public class Dept implements java.io.serializable { private byte deptno; private String dname; private String loc; private Set<Emp> emps = new HashSet<Emp>(0); public Dept() { public Dept(byte deptno) { this.deptno = deptno; public Dept(byte deptno, String dname, String loc, Set<Emp> emps) { this.deptno = deptno; this.dname = dname; this.loc = loc; this.emps = emps; @Id @Column(name = "DEPTNO", unique = true, nullable = false, precision = 2, scale = 0) public byte getdeptno() {

return this.deptno; public void setdeptno(byte deptno) { this.deptno = deptno; @Column(name = "DNAME", length = 14) public String getdname() { return this.dname; public void setdname(string dname) { this.dname = dname; @Column(name = "LOC", length = 13) public String getloc() { return this.loc; public void setloc(string loc) { this.loc = loc; @OneToMany(fetch = FetchType.LAZY, mappedby = "dept") public Set<Emp> getemps() { return this.emps; public void setemps(set<emp> emps) { this.emps = emps; Emp.java // default package // Generated 2016. 2. 12 오후 5:39:01 by Hibernate Tools 4.3.1.Final import java.math.bigdecimal; import java.util.date; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.id; import javax.persistence.joincolumn; import javax.persistence.manytoone;

import javax.persistence.table; import javax.persistence.temporal; import javax.persistence.temporaltype; /** * Emp generated by hbm2java */ @Entity @Table(name = "EMP") public class Emp implements java.io.serializable { private short empno; private Dept dept; private String ename; private String job; private Short mgr; private Date hiredate; private BigDecimal sal; private BigDecimal comm; public Emp() { public Emp(short empno) { this.empno = empno; public Emp(short empno, Dept dept, String ename, String job, Short mgr, Date hiredate, BigDecimal sal, BigDecimal comm) { this.empno = empno; this.dept = dept; this.ename = ename; this.job = job; this.mgr = mgr; this.hiredate = hiredate; this.sal = sal; this.comm = comm; @Id @Column(name = "EMPNO", unique = true, nullable = false, precision = 4, scale = 0) public short getempno() { return this.empno; public void setempno(short empno) { this.empno = empno; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "DEPTNO")

public Dept getdept() { return this.dept; public void setdept(dept dept) { this.dept = dept; @Column(name = "ENAME", length = 10) public String getename() { return this.ename; public void setename(string ename) { this.ename = ename; @Column(name = "JOB", length = 9) public String getjob() { return this.job; public void setjob(string job) { this.job = job; @Column(name = "MGR", precision = 4, scale = 0) public Short getmgr() { return this.mgr; public void setmgr(short mgr) { this.mgr = mgr; @Temporal(TemporalType.DATE) @Column(name = "HIREDATE", length = 7) public Date gethiredate() { return this.hiredate; public void sethiredate(date hiredate) { this.hiredate = hiredate; @Column(name = "SAL", precision = 7) public BigDecimal getsal() { return this.sal;

public void setsal(bigdecimal sal) { this.sal = sal; @Column(name = "COMM", precision = 7) public BigDecimal getcomm() { return this.comm; public void setcomm(bigdecimal comm) { this.comm = comm; Dept 테이블과 Emp 테이블은 1:N 관계다. Emp 테이블안에 DEPTNO 칼럼이 FK 다. 그래서연관관계 Owner 가된다. Dept 클래스의 emps 필드변수에 mappedby 설정을함으로서 Emp 클래스의 dept 필드변수가연관관계를관리한다는것을표시하며 Dept 테이블에 emps 라는칼럼생성을막고있다. 논리모델을통해객체 물리모델생성이표준이지만그반대도많이연습한다면최적의성능을고려할수있는좋은 ORM 개발자가되는데도움이되리라생각된다. 지금까지수고하셨습니다.