라벨이 오라클(Oracle)인 게시물 표시

DDD(Domain Driven Design) - Repository 리파지토리

이미지
반 버논의 도메인 주도 설계 구현 이라는 책을 완독하고 나서 여러가지 정리할 점들이 있는데, 그 중 하나가 레포지토리 이다. 오늘은 리파지토리에 대해서 다루어 보려고 한다. 지금 재직중인 회사나 전회사에서 일할때도 Database 중심적 설계를 바탕으로 시스템을 구축했다. 그리고 내가 가보지 못한 대부분의 회사들도 아마도 DDD 를 실무에서 적용하고 있지 않을 것이라고 감히 추측해 본다. 물론 DDD 를 실질적으로 도입하고 있는 회사도 많을 것이다. 잡소리는 그만하고, 리파지토리에 대해서 다루어 보겠다. 반 버논의 도메인 주도 설계 구현에서 리파지토리에 아래와 같이 2 가지를 다루고 있다. - 컬렉션 지향 리파지토리 ( collection-oriented-repository ) - 영속성 지향 리파지토리 ( persistence-oriented-repository ) 먼저, 컬렉션 지향 리파지토리이다. 책에서는, 컬렉션 지향 리파지토리는 Set 컬렉션을 흉내 내야 한다고 한다. 이 말이 무슨 말이냐면, Set에 있는 같은 객체(equals and hashcode)의 인스턴스는 두 번 추가되로록 허용해서는 안 된다. 또한 리파지토리로부터 객체를 가져오게 하고 수정할 때 이를 리파지토리에 "재저장" 할 필요가 없다. 이를 단순하게 이해하기 위해서, 책에서 나온 예제를 살펴보겠다. 표준 java.util.HashSet 을 확장하고 고유 식별자로 특정 객체를 찾도록 해주는 새로운 타입상의 메서드를 생성한다고 한다. 확장 클래스로 CalendarRepository 라는 이름을 주어 인식할 수 있도록 해주었다. 하지만 이는 단순한 인메모리 HashSet 이다. 리파지토리에서 find 를 통해서 찾은 객체를 수정한 뒤, 명시적으로 다시 add 해주지 않는다. 수정내역은 해당 객체에서 바로 일어나기 때문이다. 이와 관련된 예제로 직접 작성해보았다. 아래에서 확인할 수 있듯이, me 라는 User 타입의 객체의 n...

대학생 코딩 과제 대행 java, python, oracle 스물 여섯 번째

이미지
https://open.kakao.com/o/s3aMpbA 오라클 모델링하고나서 쿼리짜는 과제이다. 모델링이라고 하기도 웃기지만 ㅎㅎ 과제 요구사항이다. DROP TABLE ACCOUNT PURGE; DROP TABLE BRANCH PURGE; DROP TABLE CUSTOMER PURGE; DROP TABLE LOAN PURGE; DROP TABLE BORROWER PURGE; DROP TABLE DEPOSITOR PURGE; DROP VIEW ALL_CUSTOMER; CREATE TABLE ACCOUNT(     ACCOUNT_NUMBER VARCHAR2(20) PRIMARY KEY,     BRANCH_NAME VARCHAR2(20),     BALANCE NUMBER ); insert into account values('A-101','Downtown',500); insert into account values('A-102','Perryridge',400); insert into account values('A-201','Brighton',900); insert into account values('A-215','Mianus',700); insert into account values('A-217','Brighton',750); insert into account values('A-222','Redwood',700); insert into account values('A-305','Round Hill',350); select * from account; CREATE TABLE BRANCH(     BRANCH_NAME VARCHAR...

SQL developer IO Undefined Error 해결

이미지
보통 제일 먼저 확인 하는것들이.. 1. 호스트가 맞는지, 2. 포트번호가 맞는지, 3. sid가 맞는지, 4. 방화벽이 열려있는지 등등을 확인하는데 이것들이 제대로 설정되었음에도 IO오류 Undefined Error가 날 괴롭힐 때, 한시간을 넘게 삽질하다가 알아낸 결과는 정말 단순했다. 윈도우 계정이 한글로 되어있어서였다... 따라서 아래처럼 해주면,, 간단하게 해결되었다.

erwin DM 으로 Oracle 연결 할 때 뜨는 에러들 해결

이미지
첫 번째 에러 ! ora7nt.dll 라이브러리 어쩌구 저쩌구 한다. 본인은 구글링을 해본 결과 erwin이 32bit만 지원하니까 64bit 오라클을 설치했으면 지우고 32bit를 재설치하고 해보라는 답글들을 많이 봤는데 64bit문제가 아니였다. 왜냐면 내 친구가 오라클을 64bit 설치했는데 erwin이랑 잘만 연결이 되었다. 따라서 32, 64bit 개같은 소리는 듣지 않기로 하고 다른 방법을 찾아보니까 시스템환경변수에서  PATH에 oracle client를 지정해주지 않아서라는 답을 얻었다. 위에 에러 메세지에서도 적절한 클라이언트 소프트웨어를 설치하라고 한다. 그래서 PATH설정을 해주니 ora7nt.dll에러는 해결 되었다. 하지만 다음 에러에 봉착했다! ORA-01041 에러 구글링 해본 결과 아래 링크에 답이 나와있었다. https://erwinhelp.zendesk.com/hc/en-us/articles/230410267-Receiving-Error-ORA-01041-internal-error-hostdef-extension-doesn-t-exist-on-re-establishing-a-connection-to-Oracle- Locate the 'sqlnet.ora' file and set: SQLNET.AUTHENTICATION_SERVICES = (NONE) 위 처럼 sqlnet.ora 파일에서 설정을 변경해주니까 연결이 잘되었다. 잘 되는 모습, 먼저 forward Engineer 그 다음은 preview

오라클 11g PL/SQL 로만 sqlplus 에서 영화예매시스템 만들어보기

이미지
DB설계는 대충 이런식  https://pt.scribd.com/document/312084198/Multiplex-Booking-System-Oracle-2-pdf#download 요 링크에서 참고했다. 위에 ERD를 참고하면 아래처럼 테이블들과 시퀀스들을 생성해준다. create table Movies (MovieId number,  MovieName varchar2(255),  PRIMARY KEY(MovieId)); create table Hall (HallID number,  HallDesc varchar2(255),  TotalCapacity number,  PRIMARY KEY(HallID));  create table Shows  (ShowId number,   HalId number,   MovieId number,   SlotNo number,   FromDate date,   ToDate date,   PRIMARY KEY(ShowId),   foreign key(MovieId) references Movies(MovieId),   foreign key(HalId) references Hall(HallID));      create table Users   (UserId number,   UserType char,   UserName varchar2(45),   MobileNo number,   EmailId varchar2(255),   primary key(UserId));      create table Booking   (BookingId number,   ShowId number,   U...