과정명

Size: px
Start display at page:

Download "과정명"

Transcription

1 데이터접근프레임워크 (JPA 와 Hibernate) 교육기간 : ~ 강사 : 박석재, 임병인 넥스트리소프트 demonpark@nextree.co.kr byleem@nextree.co.kr

2 교육일정표 교육은매회 3 시간씩총 5 회에걸쳐진행합니다. 1 일차 2 일차 3 일차 4 일차 5 일차 5 월 26 일 ( 월 ) 5 월 27 일 ( 화 ) 5 월 28 일 ( 수 ) 5 월 29 일 ( 목 ) 5 월 30 일 ( 금 ) ORM 이해하기 영속성 패러다임불일치 계층형아키텍처 객체 / 관계형매핑 Quick Start - Hibernate Hibernate 개요 Hibernate 기본 OR Mapping I - Hibernate Spring 과 Hibernate 통합 OR Mapping II 트랜잭션관리 Hibernate 와 EJB - JPA 도메인모델과 JPA JPA 이용도메인객체구현 엔티티관계 엔티티매핑 엔티티관계매핑 - JPA 상속매핑 EntityManager 질의 API JPQL - 1 -

3 5 일차 JPA 5.1 상속매핑 5.2 EntityManager 5.3 질의 API 와 JPQL 단일테이블전략 조인테이블전략 클래스별테이블전략 다형성관계매핑

4 단일테이블전략 상속계층의모든클래스를한테이블로매핑함 식별자 (discriminator) 컬럼으로계층상의객체를구분함 식별자컬럼은객체의타입값을가짐 식별자컬럼 discriminatortype=discriminatortype.string, length=1) public abstract public class Seller public class Bidder extends User - 3 -

5 조인테이블전략 일대일관계를이용하여상속을표현 각엔티티별로테이블을나누며, 상속관계는일대일관계로표현 부모클래스에해당하는테이블은자식클래스들의공통인컬럼을가짐 discriminatortype=string, length=1) public abstract public class Seller public class Seller extends User

6 클래스별테이블전략 상속계층상의모든클래스가각각테이블로매핑되며테이블은관계가없음 OO / @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class public class Seller extends public class Bidder extends User { 엔티티검색시 SQL UNION 을사용하거나각엔티티를별도의 SQL 로검색해야함 - 5 -

7 상속매핑전략비교 상속매핑전략선택은많은고민을필요로함 특성단일테이블조인테이블클래스별테이블 테이블지원 모든클래스를한테이블에 컬럼이널가능 하위클래스추가시테이블이확장됨 부모클래스, 자식클래스가별도의테이블로매핑되고조인으로서로묶음매핑된테이블은정규화됨 식별자컬럼사용예예아니오 각클래스별한테이블이며조인관계없음 엔티티계층검색 SQL 생성 단순 SELECT 조인을포함한 SELECT 각클래스별하나의 SELECT 또는 SELECT의 UNION 사용 삽입 / 갱신을위한 SQL 하나의 INSERT/UPDATE 여러 INSERT/SELECT, 부모클 래스와각하위클래스용 다형성관계좋음좋음나쁨 다형성질의좋음좋음나쁨 EJB3 JPA 지원필수필수선택사항 각클래스별하나의 INSERT/UPDATE - 6 -

8 5 일차 JPA 5.1 상속매핑 5.2 EntityManager 5.3 질의 API 와 JPQL EntityManager소개 EntityManager 인스턴스생성 지속성오퍼레이션관리 엔티티라이프사이클리스너 엔티티운영가이드

9 EntityManager 소개 : EntityManager 인터페이스 (1/2) EntityManager 객체지향과관계형간의다리역할 도메인객체를테이블로변환 엔티티저장요청시 : 엔티티객체를생성하여, 데이터베이스저장한다음객체지향세계로리턴하여줌 SQL 과같은 CRUD 오퍼레이션제공 강력한기능에비해상대적으로작고단순하며직관적인인터페이스를가짐 - 8 -

10 EntityManager 소개 : EntityManager 인터페이스 (2/2) 메소드시그너처 public void persist(object entity); public <T> T merge(t entity); public void remove(object entity); public <T> T find(class<t> entityclass, Object primarykey); public void flush(); public void setflushmode(flushmodetype flushmode); public FlushModeType getflushmode(); public void refresh(object entity); public Query createquery(string jpqlstring); public Query createnamedquery(string name); public Query createnativequery(string sqlstring); public Query createnativequery(string sqlstring, Class result Class); public Query createnativequery(string sqlstring, String resultsetmapping); public void close(); public boolean isopen(); public EntityTransaction gettransaction(); public void jointransaction(); 엔티티를 DB 로저장 설명 EntityManager 의지속성컨텍스트로엔티티를병합 DB 로부터엔티티삭제 일차키로엔티티인스턴스를찾음 EntityManager 의지속성컨텍스트안의엔티티를 DB 와동기화함 EntityManager 의지속성컨텍스트의 flush 모드를변경함 (AUTO 또는 COMMIT) 현재플러시모드검색 DB 의엔티티를리셋함 JPQL 문을이요하여동적질의생성 질의인스턴스생성 원시 SQL 문을이용하여동적질의생성 EntityManager 를종료함 EntityManager 실행상태확인 트랜잭션객체검색 기존 JTA 트랜잭션조인을요청함 - 9 -

11 EntityManager 소개 : 엔티티라이프사이클 엔티티는아주단순한라이프사이클을가짐 SessionBean이나 MDB는애플리케이션시작과함께컨테이너로로드됨 반면, EntityManager 는 JPA 엔티티로인식하기전에는 POJO 를알지못함 SessionBean 이나 MDB 는처음부터끝까지컨테이너가인식함 반면, EntityManager 는가능한짧은시간동안엔티티를인식하고다루어야함 관리되는엔티티 (managed entity)

12 EntityManager 소개 : 지속성컨텍스트, 범위, EntityManager (1/2) 지속성컨텍스트 (persistence context) 주어진지속성범위내에서 EntityManager 에의해관리되는엔티티컨테이너의집합 지속성범위는엔티티를관리하고있는기간임, 다음두가지유형이있음 트랜잭션 (transaction) 확장 (extended) EntityManager 의내부기능에가장중요한역할을수행함 EntityManager 는엔티티의상태관리를현재가용한지속성컨텍스트로위임함 트랜잭션 - 범위 EntittyManager 트랜잭션기간동안엔티티는 attach 상태이고, 종료후자동으로 detach 상태가됨

13 EntityManager 소개 : 지속성컨텍스트, 범위, EntityManager (2/2) 확장 - 범위 EntityManager 여러트랜잭션을걸쳐서라이프사이클이지속됨 유상태세션빈과함께사용하고빈인스턴스가살아있는동안계속됨 엔티티의관리대상여부는트랜잭션과관계없음 빈자체가제거되든지 EntityManager가종료되어야범위가끝남

14 EntityManager 소개 : ActionBazaar 에서 EntityManager public class ItemManagerBean implements ItemManager private EntityManager entitymanager; public ItemManagerBean() {} public Item additem(string title, String description, byte[] picture, double initialprice, long sellerid) { Item item = new Item(); item.settitle(title); item.setdescription(description); item.setpicture(picture); item.setinitialprice(initialprice); Seller seller = entitymanager.find(seller.class, sellerid); item.setseller(seller); entitymanager.persist(item); return item; } public Item updateitem(item item) { entitymanager.merge(item); return item; } public Item undoitemchanges(item item) { entitymanager.refresh(entitymanager.merge(item)); return item; } public void deleteitem(item item) { entitymanager.remove(entitymanager.merge(item)); } }

15 EntityManger 인스턴스생성 : 컨테이너 - 관리 EntityManager Container-managed annotation을이용주입됨 지속성유닛은소스코드로설정할수없으므로 persistence.xml에설정함 admin 유닛을위한 EntityManager EntityManager entitymanager; 일반적으로 Java EE 모듈은하나의지속성유닛을가짐 EntityManager 범위설정 범위는엔티티의타입에따라결정됨 (transaction or EntityManager entitymanager; 무상태세션빈이나 MDB는확장-지속성범위를가질수없음 유상태세션빈은확장-지속성범위를가질수있음

16 EntityManger 인스턴스생성 : 애플리케이션 - 관리 EntityManager 애플리케이션 - 관리 EntityManager Java-EE 컨테이너로부터아무것도원하지않음 즉, EntityManager 의라이프사이클을위한모든코드를직접작성해야함 Java SE 나 Tomcat 과같은경량급웹컨테이너만있는곳에서사용 Java EE 컨테이너내에서도 EntityManager public class ItemManagerBean implements ItemManager private EntityManagerFactory entitymanagerfactory; private EntityManager entitymanager; public ItemManagerBean() public void initialize() { entitymanager = entitymanagerfactory.createentitymanager(); } public Item updateitem(item item) { entitymanager.jointransaction(); entitymanager.merge(item); return item; } public void cleanup() { if (entitymanager.isopen()) { entitymanager.close(); } }

17 지속성오퍼레이션관리 : 엔티티저장 EntityManager.persist() 인터페이스 Item은 Seller와다대일관계를가지고있음 persist() 는새로생성하는것이지갱신 (update) 하는것이아님 따라서, persist() 대상객체의일차키나 identity가 DB에존재하지않아야함 public Item additem(string title, String description, byte[] picture, double initialprice, long sellerid) { Item item = new Item(); item.settitle(title); item.setdescription(description); item.setpicture(picture); item.setinitialprice(initialprice); Seller seller = entitymanager.find(seller.class, sellerid); item.setseller(seller); entitymanager.persist(item); return item; }

18 지속성오퍼레이션관리 : 일차키로엔티티검색 EntityManager.find() 인터페이스 일차키로엔티티인스턴스검색 Seller seller = entitymanager.find(seller.class, sellerid); 첫번째파라미터 : 엔티티의자바타입 두번째파라미터 : 엔티티인스턴스의 identity @EmbeddableId를이용하여지정 복합키사용 SellerPK sellerkey = new SellerPK(); sellerkey.setfirstname(firstname); sellerkey.setlastname(lastname); Seller seller = entitymanager.find(seller.class, sellerkey); 검색결과가없을경우 null이나빈객체를리턴함 내부캐시를활용함으로써성능을높임 데이터로드시두가지모드 (lazy / @Basic(fetch=FetchType.LAZY) public byte[] getpicture() {

19 지속성오퍼레이션관리 : 엔티티갱신 (1/2) 갱신 (update) EntityManager는엔티티의모든변경을 DB에반영함 따라서, 애플리케이션은갱신에대해신경쓸필요없음 아래예제에서 seller는관리상태이므로 DB와데이터동기화를뒤에서처리하여줌 public void calculatecreditworthiness (Long sellerid) { PowerSeller seller = entitymanager.find (PowerSeller.class, sellerid); } seller.setcreditworth(seller.getcreditworth() * CREDIT_FACTOR * getratingfromcreditbureaurobberbarons(seller)); seller.setcreditworth(seller.getcreditworth() + (seller.getcreditworth() * FEEDBACK_FACTOR * seller.getbuyerfeedbackrating())); seller.setcreditworth(seller.getcreditworth() + (seller.getcreditworth() * SELLING_FACTOR * gettotalhistoricalsales(seller)));

20 지속성오퍼레이션관리 : 엔티티갱신 (2/2) detach/attach 오퍼레이션 EntityManager가트랜잭션범위에서사용될때, 트랜잭션이종료되면 detach됨 따라서, 세션빈이리턴하는모든엔티티는 detach 상태임 예, 엔티티저장 에서 additem() 메소드가리턴하는 Item은 detach 상태임 엔티티갱신을위해서는 reattacht(== merge) 함 public Item updateitem(item item) { entitymanager.merge(item); return item; }

21 지속성오퍼레이션관리 : 엔티티삭제 엔티티삭제 우선 EntityManager 에 merge() 한후 remove() 함 public void deleteitem(item item) { entitymanager.remove(entitymanager.merge(item)); } 현재 attach 상태에있는엔티티만삭제할수있기때문임 Bidder 엔티티가삭제될때 BillingInfo public class Bidder public BillingInfo setbillinginfo() { 일대다관계에서다 (many) 측의객체를삭제할때, 일 (one) 측의객체를함께삭제할때주의를요함

22 지속성오퍼레이션관리 : flush() 로갱신제어 EntityManager.flush() flush() 를모를경우불리할수있음 persist(), merge(), remove() 오퍼레이션결과가바로 DB에반영되지않음 flush() 가호출될때까지반영은늦추어짐 이러한메커니즘은불필요한 DB 접근을막아서수행성능을높이기위한것임 flush 모드 AUTO/COMMIT 디폴트 DB flush 모드는 AUTO 임, EntityManager가필요할때자동으로 flush() 호출 트랜잭션범위 EntityManager의경우, 트랜잭션종료시점에 flush() 호출 확장범위 EntityManager의경우, 지속성컨텍스트가닫히는시점에 flush() 호출 반영되지않은변경은다음질의어수행전에 flush() 호출 COMMIT 모드 커밋시에만 flush() 호출 entitymanager.setflushmode(flushmodetype.commit); 모드변경은매우비용이많이드는오퍼레이션임 entitymanager.flush();

23 지속성오퍼레이션관리 : 엔티티리프레시 EntityManager.refresh() DB 로부터관리중인모든엔티티를다시읽어옴 (repopulate) undo 오퍼레이션후에 refresh() 호출은매우유익함 public Item undoitemchanges(item item) { entitymanager.refresh(entitymanager.merge(item)); return item; } refresh() 전에항상 merge() 함 persist() 오퍼레이션호출후바로 DB 에반영되지않는상황에서사용할수있음 public Item additem(string title, String description, byte[] picture, double initialprice, long sellerid) { Item item = new Item(); item.settitle(title);... entitymanager.persist(item); entitymanager.flush(); entitymanager.refresh(item); return item; }

24 엔티티라이프사이클리스너 : 엔티티리스너사용 엔티티상태모니터링 Callback 엔티티는무상태임 예, Item 의입찰금액이지정한값을넘었을때, 통지하는경우 public class ItemMonitor {... public Callback 지정 public void monitoritem(item item) { if (item.getinitialbidamount() > ItemMonitor.MONITORING_THRESHOLD) { notificationmanager.senditemprice alert(item); } public class Item implements Serializable { 리스너등록 리스너클래스는 DI 를지원하지않음, 엔티티가 DI 컨테이너밖에서존재할수있음

25 엔티티라이프사이클리스너 : 기본리스너클래스 감사또는트랜잭션로그 모든엔티티에대한변화를기록함 이경우기본리스너를활용할수있음, 모든엔티티의모든지속성오퍼레이션을로깅 annotation 을이용하여지정할법이없음 public class @PostRemove public void logoperation(object object) { Logger.log("Performing Persistence Operation on: + object.getname()); persistence.xml 을이용하여기본리스너지정 <persistence-unit name="actionbazaar">... <default-entity-listeners> actionbazaar.persistence.actionbazaarauditor.class </default-entity-listeners>

26 엔티티라이프사이클리스너 : 리스너클래스실행순서 실행순서 기본리스너, 엔티티클래스특정리스너, 부모클래스리스너등이존재함 기본리스너가가장먼저실행됨, 다음으로부모클래스리스너,... 동일한유형의리스너가여러개일경우나열된순서대로실행 EntityListeners({actionbazaar.persistence. ItemMonitor.class, actionbazaar.persistence. ItemMonitor2.class}) public class Seller extends User {

27 엔티티운영가이드 컨테이너-관리엔티티관리자를사용할것 EntityManager를웹-티어로주입 (injecting) 하지말것엔티티접근객체패턴을사용할것콜백을외부리스너와분리할것

28 5 일차 JPA 5.1 상속매핑 5.2 EntityManager 5.3 질의API 5.4 JPQL 질의 API 소개 질의실행

29 질의 API 소개 : 개요 지금까지 EntityManager.find 를이용하여엔터티를검색하였으며, 이는 ID 나일차키로엔터티를검색하는것임 질의 API 는최적화된질의어를작성할수있게해줌 EntityManager 의인터페이스와 java.persistence.query 인터페이스를이용하여질의어정의, 파라미터바인딩, 실행, 페이지처리등을수행함 JPA 질의 API 는 JPQL 이나 SQL 모두를사용하여질의를작성할수있음 SQL 보다는 JPQL 에집중할예정임 SQL 은레코드를리턴하지만, JPQL 은엔티티를리턴함 질의 API JDBC 질의단계 (SQL) JPA 질의단계 (JPQL) EntityManager query methods 1. DB 커넥션획득 1. EntityManager 인스턴스획득 JPQL 2. 질의문생성 2. 질의인스턴스생성 Query interface 3. 질의문실행 3. 질의실행 4. 결과검색 (DB 레코드 ) 4. 결과엔터티검색

30 질의 API 소개 : 질의 (query) 분석 질의 (query) 타입 지명 (named) 질의 : 저장한후재사용함 동적 (dynamic, or ad hoc) 질의 : 실행시점에다양한환경에맞추어생성됨 동적질의예 모든카테고리를검색하고자함, JPQL em; EntityManager 주입... public List findallcategories() { Query query = em.createquery("select c FROM Category c");... return query.getresultlist(); } 지명질의일경우 : em.createnamedquery() 호출

31 질의 API 소개 : 지명 (named) 질의 (1/2) 개요 사용하기전에미리정의해야함 annotation을이용하거나 Xml 메타데이터를이용하여정의할수있음 지명질의는인스턴스를만들때이름을이용하여접근함 지명질의의장점 질의의재사용을높임 코드의유지보수를용이하게함, 질의가비즈니스로직에흩어지지않음 수행성능을높임, 한번준비되면효율적으로재사용됨 name = "findallcategories", query = "SELECT c FROM Category c WHERE c.categoryname LIKE :categoryname ") public class Category implements Serializable {... }

32 질의 API 소개 : 지명 (named) 질의 (2/2) 여러개의지명질의 javax.persistence.namedqueries 주석 @NamedQuery( name = "findcategorybyname", query = "SELECT c FROM Category c WHERE c.categoryname LIKE :categoryname order by c.categoryid" name = "findcategorybyuser", query = "SELECT c FROM Category c JOIN c.user u WHERE u.userid =?1" = "CATEGORIES") public class Category implements Serializable { } 지속성유닛범위이므로범위내에서질의이름이유일해야함

33 질의실행 : 질의인스턴스생성 (1/2) EntityManager 인터페이스 질의인스턴스를생성하기위한메소드제공 원시 SQL 질의생성을위한메소드도제공 메소드시그너처 public Query createquery(string jpqlstring); public Query createnamedquery(string name); public Query createnativequery(string sqlstring); public Query createnativequery(string sqlstring, Class result Class); public Query createnativequery(string sqlstring, String resultsetmapping); 설명 JPQL 문을이요하여동적질의생성질의인스턴스생성원시 SQL문을이용하여동적질의생성 지명질의인스턴스생성 엔티티가속한지속성유닛에접근하는모든컴포넌트로부터지명질의인스턴스생성 오픈상태의 EntityManager 인스턴스가있어야함 사용하려면 EntityManager.createNamedQuery() 메소드를호출함 Query queyr = em.createnamedquery( findallcategories );

34 질의실행 : 질의인스턴스생성 (2/2) 동적질의인스턴스생성 EntityManager가가용한곳어디서든지동적질의생성가능함 세션빈, MDB, 웹애플리케이션, 컨테이너외부 EJB 2 에서는동적질의를지원하지않음 질의생성 : EntityManager.createQuery() 타당한 JPQL 문을파라미터로전달 EntityManager가컨테이너-관리든애플리케이션-관리든상관없음 질의생성예 Query query = em.createquery( SELECT i FROM Item i ); JPQL은 SQL과유사하지만 JPQL 사용를권장함

35 질의실행 : 질의인터페이스사용 (1/5) 질의인터페이스 질의실행을위한메소드정의 질의인스턴스를위한파라미터설정메소드정의 페이지처리, 플러시모드제어등을위한메소드정의 SQL과 JPQL은동일한인터페이스사용 메소드시그너처 설명 public List getresultlist() public Object getsingleresult() public int executeupdate() public Query setmaxresults(int maxresult) public Query setfirstresult(int startposition) public Query sethint(string hintname, Object value) public Query setparameter(string name, Object value) public Query setparameter(string name, Date value, TemporalType temporaltype) 질의결과세트검색단일결과나객체검색 JPQL UPDATE나 DELETE 문실행검색할객체의최대갯수첫번째질의결과의첫번째위치질의를위한벤더특정힌트설정지명파라미터를위한값설정파라미터가 Date 타입일경우, 지면파라미터값설정

36 질의실행 : 질의인터페이스사용 (2/5) 질의인터페이스사용예, 미리정의한지명질의로부터질의인스턴스생성함 query = em.createnamedquery("findcategorybyname"); query.setparameter("categoryname", categoryname); query.setmaxresults(10); query.setfirstresult(3); List categories = query.getresultlist(); 파라미터설정 특정가격을가진모든 Item 엔티티의인스턴스검색 SELECT i FROM Item i WHERE i.initialprice =?1 파라미터는이름이나숫자로지정이가능함 query.setparameter(1, 100.0); 여러파라미터설정 SELECT i FROM Item i WHERE i.initialprice >?1 AND i.initialprice <?2 query.setparameter(1, 100.0); query.setparameter(2, 200.0);

37 질의실행 : 질의인터페이스사용 (3/5) 지면파라미터설정 - 코드가독성을높여줌 SELECT i FROM Item i WHERE i.initialprice = :price query.setparameter( price, 100.0); 단일엔터티검색 하나의엔티티만검색 query.setparameter(1, Recycle from Mr. Dumpster ); Category cat = (Category)query.getSingleResult(); 결과가없을경우, NoResultException 결과가여러개일경우, NonUniqueResultException try {... query.setparameter(1, "Recycle from Mr. Dumpster"); Category cat = (Category)query.getSingleResult();... }catch (NonUniqueResultException ex) { handleexception(ex); } catch (NoResultException ex) { handleexception(ex); }

38 질의실행 : 질의인터페이스사용 (4/5) 여러엔티티검색 대부분의질의는결과집합 (set) 이나결과리스트를리턴함 100 과 200 사이의결과를검색하는질의 query.setparameter("lowprice", lowpricevalue) 지명파라미터 lowprice query.setparameter("highprice", highpricevalue) List items = query.getresultlist(); 결과리스트가없을경우빈리스트를리턴함, 예외를던지지않음 결과리스트의페이지처리 수천또는수만건의검색결과를효율적으로처리하는방법이필요함 JPA 는페이지처리인터페이스를제공함 query.setmaxresults(50); query.setfirstresult(0); 시작오프셋값 List items = query.getresultlist(); 다음 50 건을가져오려면, query.setmaxresults(50); query.setfirstresult(50);

39 질의실행 : 질의인터페이스사용 (5/5) 오프셋과페이지사이즈를동적으로처리 public List getpageditems(int pageindex, int pagesize) {... query.setmaxresults(pagesize) ; query.setfirstresult(pageindex) ; return query.getresultlist(); } 질의 flush 모드통제 flush 모드를통해 EntityManager가 DB에쓰는방식을결정 AUTO 모드 ( 기본 ): 지속성컨텍스트안의엔티티갱신을지속성공급자가책임짐 COMMIT 모드 : 지속성컨텍스트안의엔티티에대한갱신을정의하지않음 대부분의경우 AUTO 모드사용을권장함

40 질의실행 : 질의힌트지정 벤더고유의확장 질의실행중에사용할수있는벤더고유의확장기능이있음 확장기능의예, 성능최적화, 질의힌트전달 질의힌트 질의힌트는지속성제공자가질의수행중에사용할팁 예, 질의사용중에캐시를사용할것을지정함 TopLink 사용시타임아웃시간을 10 초로설정함 query.sethint( toplink.jdbc.timeout, new Integer(10000)); Hibernate 사용시동일한동작 query.sethime( org.hibernate.timeout, new Integer(10)); 공급자의파라미터지정방식에따름, 다음은자주쓰이는예 로우패치크기, 캐시모드, 캐시리프레시, name = "finduserwithnoitems", query = "SELECT DISTINCT u FROM User u WHERE u.items is EMPTY", hints = = "org.hibernate.timeout", value = "10") } )

41 5 일차 JPA 5.1 상속매핑 5.2 EntityManager 5.3 질의API 5.4 JPQL 개요 문 (statement) 유형정의 FROM절사용 조건식과연산자 JPQL 함수사용 SELECT절사용 조합 (aggregation) 사용 질의결과정렬 하위-질의사용 엔티티조인 대량갱신과삭제

42 개요 JPQL(Java Persistence Query Language) Hibernate는 HSQL 제공 Kodo는 JDO QL 제공 JPQL은 EJB 2의 EJB QL의확장판임 JPQL은자바영역안에서클래스와객체를다룸 SQL은 DB 영역에서테이블, 컬럼, 로우를다룸 둘은외관상비슷하지만완전히서로다른두영역에서실행됨 JPQL이변환을통해 SQL로변경되는절차

43 문 (statement) 유형정의 (1/3) JPQL 은세가지문 (statement) 을제공함 SELECT: 엔티티와엔티티관련데이터를검색함 UPDATE: 하나또는그이상의엔티티를갱신함 DELETE: 하나또는그이사의엔티티를삭제함 SELECT 정의및사용 JPQL 의예, SELECT c FROM Category c WHERE c.categoryname LIKE :categoryname ORDER BY c.categoryid SELECT 절 : 검색할객체타입, 엔티티, 값등을지정함 FROM 절 : 다른절에서사용할엔티티선언 [ 옵션 ] WHERE 절 : 질의결과를필터링함 [ 옵션 ] ORDER BY 절 : 질의결과순서를정함 [ 옵션 ] GROUP BY 절 : 조합 (aggregation) 수행 [ 옵션 ] HAVING 절 : 조합과결합 (conjunction) 안에서필터링수행

44 문 (statement) 유형정의 (2/3) UPDATE 와 DELETE 정의 WHERE 절에조건을지정함으로써대규모갱신및삭제가가능함 SQL 문과매우유사함 UPDATE 사용 한가지엔티티유형만지정할수있음 엔티티개수를제한하기위해 WHERE 절을사용함 UPDATE 문의구문, UPDATE entityname indentifiervariable SET single_value_path_expression1 = value1,... single_value_path_expressionn = valuen WHERE where_clause 성이 Packrat 인판매자의상태를 G(Gold) 로하고커미션비율을 10 퍼센트로함 UPDATE Seller s SET s.status = 'G', s.commissionrate = 10 WHERE s.lastname like 'PackRat%'

45 문 (statement) 유형정의 (3/3) DELETE 사용 SQL 문과매우비슷함 하나의엔티티유형만지정할수있음 WHERE 절에서문의영향을받는대상을제한함 DELETE 문의구문 DELETE entityname indentifiervariable WHERE where_clause Silver 상태의판매자를모두삭제함 DELETE Seller s WHERE s.status= Silver

46 FROM 절사용 (1/4) FROM 절 가장중요한절로질의를위한도메인 ( 질의대상엔티티 ) 을결정함 FROM Category c Category는도메인이며, c는 Category 타입에대한식별자 (identifier) 로지정함 질의도메인지정 : 주석에서 name 요소를사용하여엔티티의이름을정의할수있음 name을지정하지않을경우, 엔티티클래스의이름이엔티티이름이됨 지속성유닛안에서이름은유일해야함 Category = "CategoryEntity") public class Category 이경우, FROM 절은 FROM CategoryEntity c

47 FROM 절사용 (2/4) 식별자 (identifier) 변수 (SELECT c )FROM Category c 에서정의된식별자 c 는다른절에서도사용함 구문 FROM entityname [AS] identificationvariable identificationvariable 는자바에서타당한변수여야하며, JPQL 의예약어가아니어야함 다음은 JPQL의예약어들임유형 예약어 문 (statement) 과절 (clause) 조인조건과연산함수 (function) SELECT, UPDATE, DELETE, FROM, WHERE, GROUP, HAVING, ORDER, BY, ASC, DESC JOIN, OUTER, INNER, LEFT, FETCH DISTINCT, OBJECT, NULL, TRUE, FALSE, NOT, AND, OR, BETWEEN, LIKE, IN, AS, UNKNOWN, EMPTY, MEMBER, OF, IS, NEW, EXISTS, ALL, ANY, SOME AVG, MAX, MIN, SUM, COUNT, MOD, UPPER, LOWER, TRIM, POSITION, CHARACTER_LENGTH, CHAR_LENGTH, BIT_LENGTH, CURRENT_TIME, CURRENT_DATE, CURRENT_TIMESTAMP

48 FROM 절사용 (3/4) 경로표현식 (path expression) 이란? 표현식 c.categoryname, c.categoryid 등을경로표현식이라고함 (.) 은항해연산자 WHERE 절이나 ORDER BY 절에서사용함 연관관계필드는단일값객체거나집합객체일수있음 컬렉션값표현식의예, SELECT distinct c FROM Category c WHERE c.items is NOT EMPTY 컬렉션값표현식을이용한지속성필드항해예, c.items.user.firstname c.items.user.contactdetails. c.items.itemname (== category.getitems().getitemname() 와동일함 )

49 FROM 절사용 (4/4) WHERE 를이용한필터링 WHERE 절은질의결과를필터링함 WHERE 절이없을경우, 모두를대상으로함 SELECT c FROM Category c 조건을지정함 SELECT c FROM Category c WHERE c.categoryid > 500 WHERE 절에는자바상수의거의모든타입사용, boolean, float, enum, String, int 등 octal, hexadecimal, byte[], char[] 등은사용하지못함

50 조건식과연산자 (1/5) 개요 WHERE 절의조건은조건표현식또는조건식 (conditional expression) 이라고함 JPQL 은숫자, 문자열, 부울리언값, 경로표현식을관계형연산자를이용하여평가함 조건식의예, c.categoryname = Dumped Cars 연산자의유형들 연사자유형 항해 (navigational). 단항부호 (unary sign) +, - 수식 (arithmetic) *, /, +, - 연산자 관계 (relational) =, >, >=, <, <=, <>, [NOT] BETWEEN, [NOT] LIKE, [NOT] IN, IS [NOT] NULL, IS [NOT] EMPTY, [NOT] MEMBER [OF] 논리 (logical) NOT, AND, OR WHERE c.categoryname = 'Dumped Cars' OR c.categoryname = 'Furniture from Garbage' 조건식의예,

51 조건식과연산자 (2/5) BETWEEN 을이용한범위비교 수식에서값의범위를비교하기위해 BETWEEN을사용함 BETWEEN 연산자구문 path_expression [NOT] BETWEEN lowerrange and upperrange 범위표현의예, WHERE c.categoryid BETWEEN :lowrange AND :highrange IN 연산자사용 경로표현식이리스트값안에있는지여부를판단하는조건식에 IN을사용함 IN 연산자구문, path_expression [NOT] IN (List_of_values) IN 연산자를사용한예 < WHERE u.userid IN ( viper, drdba, dumster ) WHERE u.userid NOT IN ( viper, drdba, dumster ) 하위질의와 IN의사용, ( 하위질의결과가복수일수있음 ) WHERE c.user IN (SELECT u FROM User u WHERE u.usertype = 'A')

52 조건식과연산자 (3/5) LIKE 연산자사용 단일값경로표현식이문자열패턴과일치하는지확인할때 LIKE 연산자를사용함 LIKE 연산자구문 string_value_path_expression [NOT] LIKE pattern_value pattern_value 는상수이거나파라미터임 pattern_value 는 (_) 나 (%) 를포함할수있음, (_) 는단일문자, (%) 는여러문자를의미함 LIKE 연산자를사용한예, WHERE c.itemname LIKE _ike mike, bike 모두해당 (%) 를사용한예, WHERE c.categoryname LIKE Recycle% Recycle 로시작하는모든단어 (%) 를앞뒤로사용한예, WHERE c.categoryname NOT LIKE %Recycle% Recycle 이포함되지않음모든이름 파라미터를적용한예, WHERE c.categoryname NOT LIKE?1-51 -

53 조건식과연산자 (4/5) 널값과빈컬렉션다루기 널과빈문자열은서로다르고, JPQL은서로다른방식으로이들을다룸 널과빈문자열을동일한방식으로다루는 DB도있음 빈문자열과널을비교해서 true를리턴하는지확인해야함 널을포함한부울리언연산결과 표현식 1 값 부울리언연산자 표현식 2 값 결과 TRUE AND null UNKNOWN FALSE AND null FALSE Null AND null UNKNOWN TRUE OR null TRUE Null OR null UNKNOWN FALSE OR null UNKNOWN NOT null UNKNOWN NOT NULL 체크예, WHERE c.parentcategory IS NOT NULL

54 조건식과연산자 (5/5) 컬렉션 컬렉션의 IS NOT NULL 체크가불가능하여, IS [NOT] EMPTY 를사용함 컬렉션 EMPTY 체크예, WHERE c.items IS EMPTY JPQL 에서의다음표현이, SELECT c FROM Category c WHERE c.items IS EMPTY SQL 의다음표현으로변환됨 SELECT c.category_id, c.category_name, c.create_date, c.created_by, c.parent_id FROM CATEGORIES c WHERE ( (SELECT COUNT(*) FROM CATEGORIES_ITEMS ci, ITEMS i WHERE ( (ci.category_id = c.category_id) AND (i.item_id = ci.item_id))) = 0)

55 JPQL 함수사용 (1/2) 개요 JPQL은문자열과산술 (arithmetic) 연산을위한내장함수를제공함 이함수는 WHERE절이나 HAVING 절에서사용할수있음 문자열함수 질의결과필터링에사용함 문자열함수 CONCAT(string1, string2) SUBSTRING(string, position, length) TRIM([LEADING TRAILING BOTH] [trim_character] FROM] string_to_trimmed) LOWER(string) UPPER(string) LENGTH(string) LOCATE(searchString, sringtobesearched[initialposition]) 두문자열값을합쳐서리턴함 설명 position 부터 length 까지의부분문자열을리턴함 지정된문자열을새로운길이로정리함. 정리 (trimming) 은 LEADING, TRAILING, 또는 BOTH 끝단에서. 정리문자가없으면기본으로스페이스임 문자열을소문자로변환 문자열을대문자로변환 문자열의길이를리턴함 주어진문자열의위치를리턴함. initialposition 을주지않으면 1 로부검색을시작함

56 JPQL 함수사용 (2/2) 문자열함수 ( 계속 ) 합친문자열을비교하는예, WHERE CONCAT(u.firstName, u.lastname) = ViperAdmin 하위문자열을비교하는예, WHERE SUBSTRING(u.lastName, 1, 3) = VIP 산술함수 CRUD 오퍼레이션에계산은별로쓰이지않음 보고목적으로산술함수를사용하면매우유용함 다음함수는 WHERE 절이나 HAVING 절에서사용함 산술함수 설명 ABS(simple_arithmetic_expression) SQRT(simple_arithmetic_expression) MOD(num, div) SIZE(collection_value_path_expression) 절대값을리턴함제곱근을리턴함정수값리턴컬렉션의항목개수를리턴함 SIZE 의예, WHERE SIZE(c.items) =

57 SELECT 절사용 개요 SELECT 절은질의결과를나타냄 SELECT 절의구문 SELECT [DISTINCT] expression1, expression2,... expressionn expression 은단일값임, 컬렉션값경로표현식은불가능함 SELECT 절의예, SELECT c.categoryname, c.createdby FROM Category c 중복데이터를허용하지않는예, SELECT DISTINCT c.categoryname, c.createdby FROM Category c 생성자표현식사용 하나이상의자바인스턴스를리턴하기위해생성자사용이가능함 SELECT NEW actionbazaar.persistence.itemreport (c.categoryid, c.createdby) FROM Category WHERE categoryid.createdby = :username

58 조합 (Aggregation) 사용 (1/2) 조합은엔티티컬렉션을다루는보고서질의를작성할때유용함 조합함수 JPQL 은조합함수를제공함, AVG, COUNT, MAX, MIN, SUM 조합함수의리턴타입 AVG() 리턴타입은 Double COUNT() 리턴타입은 Long MAX() 리턴타입은지속성필드에따라다름 MIN() 리턴타입은지속성필드에따라다름 SUM() 리턴타입은 Long 이나 Double 가격이가장높은값을찾는예, SELECT MAX(i.itemPrice) FROM Item i 질의결과개수를세는예, SELECT COUNT(c) FROM Category c

59 조합 (Aggregation) 사용 (2/2) GROUP BY 와 HAVING 으로묶음짓기 특정필드를기준으로데이터를묶음지을필요가있음 User 와 Category 간에일대다관계가있을때, Category 인스턴스를 user 기준으로묶음 SELECT c.user, COUNT(c.categoryId) FROM Category c GROUP BY c.user 위의예에서, Category 엔티티를다섯개이상가진사용자만으로제한한예, SELECT c.user, COUNT(c.categoryId) FROM Category c GROUP BY c.user HAVING COUNT(c.categoryId) > 5 WHERE 절추가한예, SELECT c.user, COUNT(c.categoryId) FROM Category c WHERE c.createdate is BETWEEN :date1 and :date2 GROUP BY c.user HAVING COUNT(c.categoryId) >

60 질의결과정렬 ORDER BY 절 검색결과값이나객체를정렬할때사용함 ORDER BY 절구문, ASC 이기본값임 ORDER BY path_expression1 [ASC DESC],... path_expressionn [ASC DESC] 카테고리이름으로오름차순으로정렬한예, SELECT c FROM Category c ORDER BY c.categoryname ASC 오름차순과내림차순을각각지정한예, SELECT c.categoryname, c.createdate FROM Category c ORDER BY c.categoryname ASC, c.createdate DESC WHERE 절이있을경우, 먼저 WHERE 절에의해필터링된다음, 정렬함

61 하위 - 질의사용 (1/3) 하위 - 질의 (subquery) 하위 - 질의는질의속의질의임 WHERE 절이나 HAVING 절에서하위 - 질의를사용할수있음 JPQL 에서는 SQL 과는달리 FROM 절에서는하위 - 질의를사용할수없음 하위 - 질의가먼저실행되고본질의가다음으로실행됨 하위 - 질의구문 [NOT] IN / [NOT] EXISTS / ALL / ANY / SOME ( 하위 - 질의 ) IN 에서하위 - 질의 IN 절은리스트값에서하나의값이포함되어있는지를평가함 IN 에서하위 - 질의예, SELECT i FROM Item i WHERE i.user IN (SELECT c.user FROM Category c WHERE c.categoryname LIKE :name)

62 하위 - 질의사용 (2/3) EXISTS 하위 - 질의가어떤결과세트를포함하는지확인함 EXISTS 절의예, SELECT i FROM Item i WHERE EXISTS (SELECT c FROM Category c WHERE c.user = i.user) EXISTS 절은 IN 연산자와동일함 테이블이대용량데이터를가지고있을경우, IN 보다는 EXISTS 사용을권장함 DB는 EXISTS를사용할때더효율적으로처리함 ANY, ALL, SOME IN 연산자사용과유사함 산술연산자와함께사용할수있음, =, >, >=, <, <=, <>

63 하위 - 질의사용 (3/3) ANY, ALL, SOME ( 계속 ) 하위 - 질의와 ALL 연산자의예, SELECT c FROM Category c WHERE c.createdate >= ALL (SELECT i.createdate FROM Item i WHERE i.user = c.user) 하위 - 질의와 ANY 연산자의예, SELECT c FROM Category c WHERE c.createdate >= ANY (SELECT i.createdate FROM Item i WHERE i.seller = c.user) SOME 은 ANY 의다른이름

64 엔티티조인 (1/3) JOIN 연산자 FROM 절에엔티티지정함 WHERE 절에조인조건을지정함 두엔티티는관계나임의의지속성필드를기반으로연결 (join) 함 내부조인 : 관계를이용하여 Category 와 Item 을조인하고조인조건에일치하는엔티티만을검색함 외부조인 : 조인조건에일치하는결과뿐아니라다른쪽의엔티티에일치하지않는엔티티역시검색함, 즉 Item 과일치하지않더라도 Category 의모든인스턴스를검색함 쎄타 (Theta) 조인 관계보다는임의의지속성이나관계필드를기반으로연결함 Category 의 rating 필드가 DELUXE, GOLD, STANDARD, PREMIUM 값을가짐 Item 의 star 필드역시 DELUXE, GOLD, STANDARD, PREMIUM 값을가짐 SELECT i FROM Item i, Category c WHERE i.star = c.rating 이두엔티티를쎄타조인을걸면,

65 엔티티조인 (2/3) 관계조인 가장흔한형태의조인임 관계를바탕으로둘또는그이상의엔티티를연결함 Category 와 User 는다대일관계를가짐, 특정범주에속하는모든사용자검색예, SELECT u FROM User u INNER JOIN u.category c INNER 절은선택사항임 WHERE u.userid LIKE?1 외부조인 엔티티간의연관관계가선택적일때, 조인조건에맞지않는추가엔티티를검색할수있음 보고서작성에매우유용함 Category 를가지지않는 User 도있을경우의예, SELECT u FROM User u LEFT OUTER JOIN u.category c WHERE u.userid like?1-64 -

66 엔티티조인 (3/3) 페치 (fetch) 조인 특정엔티티를위한질의를하면서, 동시에연관엔티티도동시에검색할수있음 Bid 를검색할때, 연관된 Bidder 의인스턴스를로드하고초기화하는예, SELECT b FROM Bid b FETCH JOIN b.bidder WHERE b.biddate >= :biddate 관계에대해지연로드로설정된상황, 특정질의에서연관엔티티를즉시로드할때 페치조인은외부, 내부조인과함께사용할수있음

67 대량갱신과삭제 개요 연말에사용자의상태값을모두 G(old) 로변경하는예, UPDATE User u SET u.status = 'G' WHERE u.numtrades >=?1 em;... // start transaction Query query = em.createquery("delete USER u WHERE u.status = :status "); query.setparameter("status", 'GOLD'); int results = query.executeupdate(); //end transaction 대량갱신과삭제는여러함정이있으므로반드시별도의트랜잭션으로실행해야함 DB 오퍼레이션으로바로변환되므로관리엔티티와 DB 간불일치발생가능함

68 넥스트리소프트 ( 주 ) 박석재수석 (demonpark@nextree.co.kr) 임병인수석 (byleem@nextree.co.kr) 과정명 : SQL 기초와 MyBatis SQL/MyBatis

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

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

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

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

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

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

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

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

5장 SQL 언어 Part II

5장 SQL 언어 Part II 5 장 SQL 언어 Part II 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 1 / 26 데이터조작문 데이터검색 : SELECT 문데이터추가 : INSERT 문데이터수정 : UPDATE 문데이터삭제 : DELETE 문 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 2 / 26 SELECT

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

파워포인트 템플릿

파워포인트 템플릿 ibizsoftware 정호열차장 ( 표준프레임워크오픈커뮤니티커미터 ) Agenda 1. ibatis 와 Hibernate 의개념및특징 2. Hibernate 와 JPA 쿼리종류 3. ibatis 와 Hibernate 동시사용을위한 Transaction 처리방안 4. @EntityListeners 활용방법 Agenda 5. Hibernate 사용시 Dynamic

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

chap x: G입력

chap x: G입력 재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘

More information

SQL

SQL 데이터베이스및 SQL 언어의기초 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 데이터베이스및 SQL 언어의기초 1 / 36 Part I 데이터베이스 박창이 ( 서울시립대학교통계학과 ) 데이터베이스및 SQL 언어의기초 2 / 36 데이터의구성및표현 개체 (entity): DB가표현하려는유형 / 무형적정보의대상속성 (attribute): 개체가갖는특성도메인

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

문서 템플릿

문서 템플릿 HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,

More information

유니티 변수-함수.key

유니티 변수-함수.key C# 1 or 16 (Binary or Hex) 1:1 C# C# (Java, Python, Go ) (0101010 ). (Variable) : (Value) (Variable) : (Value) ( ) (Variable) : (Value) ( ) ; (Variable) : (Value) ( ) ; = ; (Variable) : (Value) (Variable)

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 MySQL - 명령어 1. 데이터베이스관련명령 2. 데이터베이스테이블관련명령 3. SQL 명령의일괄실행 4. 레코드관련명령 5. 데이터베이스백업및복원명령 1. 데이터베이스관련명령 데이터베이스접속명령 데이터베이스접속명령 mysql -u계정 -p비밀번호데이터베이스명 C: > mysql -ukdhong p1234 kdhong_db 데이터베이스생성명령 데이터베이스생성명령

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

슬라이드 1

슬라이드 1 UNIT 6 배열 로봇 SW 교육원 3 기 학습목표 2 배열을사용핛수있다. 배열 3 배열 (Array) 이란? 같은타입 ( 자료형 ) 의여러변수를하나의묶음으로다루는것을배열이라고함 같은타입의많은양의데이터를다룰때효과적임 // 학생 30 명의점수를저장하기위해.. int student_score1; int student_score2; int student_score3;...

More information

@ p a g e c o n te n tt y p e = " te x t/ h tm l;c h a rs e t= u tf- 8 " fo r (in t i= 0 ; i< = 1 0 ; i+ + ) { o u t.p rin tln (" H e llo W o rld " + i + " < b r/> " ); = re s u lt + re s u lts u m ()

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

빅데이터분산컴퓨팅-5-수정

빅데이터분산컴퓨팅-5-수정 Apache Hive 빅데이터분산컴퓨팅 박영택 Apache Hive 개요 Apache Hive 는 MapReduce 기반의 High-level abstraction HiveQL은 SQL-like 언어를사용 Hadoop 클러스터에서 MapReduce 잡을생성함 Facebook 에서데이터웨어하우스를위해개발되었음 현재는오픈소스인 Apache 프로젝트 Hive 유저를위한

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

JDBC 소개및설치 Database Laboratory

JDBC 소개및설치 Database Laboratory JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }

More information

ThisJava ..

ThisJava .. 자바언어에정확한타입을추가한 ThisJava 소개 나현익, 류석영 프로그래밍언어연구실 KAIST 2014 년 1 월 14 일 나현익, 류석영 자바언어에정확한타입을추가한 ThisJava 소개 1/29 APLAS 2013 나현익, 류석영 자바 언어에 정확한 타입을 추가한 ThisJava 소개 2/29 실제로부딪힌문제 자바스크립트프로그램분석을위한요약도메인 나현익,

More information

슬라이드 제목 없음

슬라이드 제목 없음 4.2 SQL 개요 SQL 개요 SQL은현재 DBMS 시장에서관계 DBMS가압도적인우위를차지하는데중요한요인의하나 SQL은 IBM 연구소에서 1974년에 System R이라는관계 DBMS 시제품을연구할때관계대수와관계해석을기반으로, 집단함수, 그룹화, 갱신연산등을추가하여개발된언어 1986년에 ANSI( 미국표준기구 ) 에서 SQL 표준을채택함으로써 SQL이널리사용되는데기여

More information

API 매뉴얼

API 매뉴얼 PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

과정명

과정명 데이터접근프레임워크 (JPA 와 Hibernate) 교육기간 : 2014.05.26 ~ 05.30 강사 : 박석재, 임병인 넥스트리소프트 demonpark@nextree.co.kr byleem@nextree.co.kr 교육일정표 교육은매회 3 시간씩총 5 회에걸쳐진행합니다. 1 일차 2 일차 3 일차 4 일차 5 일차 5 월 26 일 ( 월 ) 5 월 27

More information

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역 WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

TITLE

TITLE CSED421 Database Systems Lab MySQL Basic Syntax SQL DML & DDL Data Manipulation Language SELECT UPDATE DELETE INSERT INTO Data Definition Language CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE

More information

슬라이드 제목 없음

슬라이드 제목 없음 5.2 ER 모델 ( 계속 ) 관계와관계타입 관계는엔티티들사이에존재하는연관이나연결로서두개이상의엔티티타입들사이의사상으로생각할수있음 관계집합은동질의관계들의집합 관계타입은동질의관계들의틀 관계집합과관계타입을엄격하게구분할필요는없음 요구사항명세에서흔히동사는 ER 다이어그램에서관계로표현됨 ER 다이어그램에서다이어몬드로표기 관계타입이서로연관시키는엔티티타입들을관계타입에실선으로연결함

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT 3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT NOT NULL, FOREIGN KEY (parent_id) REFERENCES Comments(comment_id)

More information

09-interface.key

09-interface.key 9 Database insert(record r): boolean find(key k): Record 1 Record getkey(): Key * Record Key Database.? Key equals(key y): boolean Database insert(record r): boolean find(key k): Record * Database OK 1

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에

More information

2 Cover Story POJO 로돌아온 EJB 3.0 과자바퍼시스턴스 API 이번특집에서는자바EE 5의변화중가장눈에띄는 EJB 3.0과자바퍼시스턴스 (Java Persistence) API 기술을소개하고자한다. 이기술들은기존 EJB 2.1에비해서많은부분이달라졌다.

2 Cover Story POJO 로돌아온 EJB 3.0 과자바퍼시스턴스 API 이번특집에서는자바EE 5의변화중가장눈에띄는 EJB 3.0과자바퍼시스턴스 (Java Persistence) API 기술을소개하고자한다. 이기술들은기존 EJB 2.1에비해서많은부분이달라졌다. 2 Cover Story POJO 로돌아온 EJB 3.0 과자바퍼시스턴스 API 이번특집에서는자바EE 5의변화중가장눈에띄는 EJB 3.0과자바퍼시스턴스 (Java Persistence) API 기술을소개하고자한다. 이기술들은기존 EJB 2.1에비해서많은부분이달라졌다. 자바SE 5의메타데이터어노테이션 (metadata annotation) 을도입하고 POJO(Plain

More information

thesis

thesis ( Design and Implementation of a Generalized Management Information Repository Service for Network and System Management ) ssp@nile nile.postech.ac..ac.kr DPE Lab. 1997 12 16 GMIRS GMIRS GMIRS prototype

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chap12-OOP.ppt 객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

슬라이드 1

슬라이드 1 EJB and JBoss SEAM 양수열소장 Java Champion, JCO Advisor, Inpion Consulting Agenda Web Framework & EJB What is Seam? Why Seam? Q/A Framework history Main Milestone in Standard & OpenSource 95 96 97 98 99 00

More information