수업 시작하기 전 [40기 면접] 이야기
- 자바 질문이 많고,
- 프레임워크, API의 차이
- 데이터 분석을 해본 경험이 있는가
- 기업에 따라 자신들의 회사에 맞는 질문을 한다.
<다른 분반 A반 필기 내용 참고>
1. 프로젝트를 생성한다. Java ~ Mybatis ~ Oracle ( ojdbc6.jar mybatis3.4.6.jar ) 설정되어있는 JDK를 사용한다.
2. 테이블을 생성한다.
3. VO클래스를 생성한다. 테이블의 컬럼명과 VO클래스의 필드명을 일치시킨다. 자료형은 각 언어에 맞는 자료형으로 설정한다 ( number - int or double varchar2 - String , date - String )
4. db.properties 파일을 생성(복사) 한다. 내용이 틀림이 없는지 확인한다.
5. mybatis-config.xml 파일을 생성(복사) 한다.
1) DB접속정보 설정의 파일명이 올바른지 확인한다. db.properties 명칭의 파일이 있는지 확인한다.
2) typeAliases에 해당 프로젝트의 VO클래스를 등록한다.
3) DB접속정보 셋팅 부분에서는 value에 지정한 변수명이 db.properties의 키명칭과 같은지 확인한다.
4) Mappers에서는 해당 프로젝트에서 사용할 mapper.xml파일 (SQL 구문이 작성되어있는) 이 등록되어 있는지 확인한다.
6. 프로젝트에 필요한 패키지와 Java파일들을 생성한다.
1) vo, ui, manager, dao 패키지를 생성한다.
2) vo패키지에는 VO클래스를 3) ui패키지에는 main,ui클래스를 4) manager패키지에는 manager클래스를 5) dao 패키지에는 dao클래스와 mapper인터페이스 MybatisConfig 파일을 생성(복사)한다.
7. ~mapper.xml (SQL) 파일의 내용을 추가한다.
1) mapper태그의 namespace속성 값을 프로젝트의 dao패키지의 mapper인터페이스의 경로로 설정한다.
2) 기능별로 SQL구문을 작성한다. ex) 프로그램을 실행하면 회원정보를 DB에 등록하는 기능을 수행하고 싶다. ( 회원 가입 ) insert SQL구문을 작성해야한다.
3) mapper.xml에서 해당 DML과 같은 태그를 생성한다.
4) 생성된 태그 안쪽에서 SQL구문을 작성한다. 단, ; 는 작성하지 않는다.
5) 생성된 태그에 id 속성값을 지정한다. 단, id 속성값은 해당 파일에서 유니크 해야된다. id값은 해당 SQL를 실행하기 위한 이름이라고 보면된다.
6) 해당 SQL구문이 실행되기 위해서 전달 받아야 하는 값이 있을 경우에는 parameter type을 반환 해줘야 하는 값이 있을 경우에는 result type을 지정해야 한다. 이때 type은 mybatis-config.xml에서 지정한 type Alias를 사용한다.
8. Mapper 인터페이스의 추상메소드를 생성한다.
1) 추상메소드의 메소드명칭은 mapper.xml의 SQL을 포함하고있는 태그의 id값과 일치해야한다.
2) 추상메소드의 return type은 SQL을 포함하고 있는 태그의 result type과 일치해야 한다. 단, 없을 경우는 void로 한다. 이때 ( insert , delete , update 태그의 경우에는 int를 활용할 수 도 있다. )
3) 추상메소드의 parameter type은 SQL을 포함하고 있는 태그의 parameter type과 일치해야 한다. 단, 없을 경우는 작성하지 않는다.
9. DAO 클래스의 내용을 작성한다.
1) MybatisConfig.java 파일에서 생성한 SqlSessionFactory 객체를 가져온다. ( DB접속정보, SQL정보, 별칭정보 등을 가지고 있는 객체 )
2) Mapper 인터페이스에서 작성한 추상메소드를 복사하여 DAO클래스에 붙여넣는다.
3) 해당 메소드에서 DB접속을 하는 코드를 작성한다. SqlSession 객체를 통해서 openSession을 하게 된다.
4) Mapper 인터페이스를 사용할 수 있도록 SqlSession 객체에서 getMapper 메소드를 활용하여 객체로 생성한다.
5) 생성된 객체를 통해서 추상메소드를 실행한다.
6) 실행한 SQL구문이 DML (insert, update , delete) 일 경우에는 반드시 commit을 한다.
7) DB접속 동작은 언제든지 예외가 발생할 수 있는 동작이므로 예외처리를 반드시 해야한다.
8) SQL동작을 다 실행 했다면, DB접속을 종료시켜준다.
오라클(DBMS) : RDBMS 관계형 데이터베이스
자바(메모리 안에서 구동): OOP 객체지향 언어
데이터베이스와 프로그래밍 언어 C, 파이썬, 자바(ojdbc.jar)와 연결하려면 API가 자바쪽으로 포함이 되어 있어야 한다.
ojdbc.jar : 오라클 측에서 자바에 연결할 수 있도록 해주는 파일 (JDBC: java 코드 안에 sql이 들어감, 좋지 않다, select * from empz가 있다면 자바에서는 오류가 안나지만 데이터베이스에 해당 테이블이 없다면 오류가 발생한다. Run 실행오류)
① BuildPath
② ext
③ lib폴더를 생성하고 직접 ojdbc.jar를 복붙해서 작업(전체 프로젝트가 커지는 단점이 있다.)
[MyBatis로 작업시에는 형식을 따라야 한다.]
①ojdbc.jar(오라클 설치 디렉토리)와 Mybatis의 *.jar(mybatis-3.2.8.jar) 두 개의 파일을 구해 특정 폴더에 가져다 놓는다.
특정 폴더는 build path에 사용, 위치가 변경되면 안된다.
②계정명 : hr/hr
url: localhost
포트번호: 1521
sid: xe
오라클이 지정해준 url 접근 방법을 가지고 셋팅을 해야 한다.
빌드 패스를 사용하면 위치를 옮기면 안된다.
오류가 발생하면 패스가 바꼈구나 생각하면 된다.
<자! 그럼 연동을 시작해볼까요?>
1) 계정 설정을 위한 텍스트 파일 : db.properties
oracleDriver
하단에 있는 클래스에서 db.properties을 복사해 상단의 src에 붙여넣어 준다.
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
username=hr
password=hr
앞 쪽에 존재하는 것이 키, 뒤에 오는 것이 밸류이다.
mybatis-config.xml를 클릭해 source 들어가기
<!-- DB접속정보 값을 가지고 있는 파일 설정 -->
<properties resource="db.properties" />
db.properties의 정보를 읽어다가
[방법 및 순서]
1) 계정 설정을 위한 텍스트 파일 : db.properties
2) mybatis를 이용하여 oracle에 접속하기 위한 설정: mybatis-config.xml
3) mapper 파일의 생성 : *.xml
4) mybatis-config.xml에 메퍼파일 등록
5) 자바쪽에서 연결(session)을 실시하는 코드 생성 (MybatisConfig.java)
6) 쿼리문에 맞는 VO 생성(데이터를 받아낼 VO가 필요하다.) → mybatis-config.xml 타입 설정하기(typeAliases)
7) 자바쪽에서 매퍼파일에서 사용할 설계도(interface => PersonMapper.java)를 설정한 후 이 파일의 메소드를 mapper에 등록한다.
8) 테이블을 직접! 만들고 제어할 java 파일을 만든다. (PersonDAO)
컬럼명과 같은 VO를 생성한다.
개인 정보를 저장할 VO 클래스 ↓
package test.vo;
/**
* 개인 정보를 저장할 VO 클래스
*/
public class Person {
private int num; //일련번호
private String name; //이름
private int age; //나이
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(int num, String name, int age) {
this.num = num;
this.name = name;
this.age = age;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [num=" + num + ", name=" + name + ", age=" + age + "]";
}
}
주의할 것! SQL에서 사용한 컬럼명 그대로 사용해야 한다. 대신 데이터타입은 자바에 맞게 변경해도 된다.
sqlSessionFactory 꼭 필요하다.
기억해둘 것
<properties resource="db.properties" />
<typeAlias type="test.vo.Person" alias="person" /> : 내가 만든 VO의 이름
<mapper resource="personMapper.xml" /> : 내가 만든 mapper의 이름
[다시 정리하기]
1) 계정 설정을 위한 텍스트 파일 : db.properties
2) mybatis를 이용하여 oracle에 접속하기 위한 설정: mybatis-config.xml
3) mapper 파일의 생성 : *.xml
4) mybatis-config.xml에 메퍼파일 등록
5) 자바쪽에서 연결(session)을 실시하는 코드 생성 (MybatisConfig.java)
6) 쿼리문에 맞는 VO 생성(데이터를 받아낼 VO가 필요하다.) → mybatis-config.xml 타입 설정하기(typeAliases)
7) 자바쪽에서 매퍼파일에서 사용할 설계도(interface)를 설정한 후 이 파일의 메소드를 mapper에 등록한다.
public interface PersonMapper {
//Person객체 저장
public int insertPerson(Person p);
}
이때 말하는 저장은 하드디스크를 뜻한다.
[삭제]
delete from person
where num =1;
delete문을 실행하기 위해 숫자를 알아야 한다.
public int deletPerson(int num); 코드를 넣고 위의 delete 명령문 삭제
저장할 때 insert라고 쓰고 파라미터 타입으로 "person"을 쓴다.
메소드 이름을 아이디로
위의 클래스는 세터의 역할을 수행한다.
세미콜론;을 절대 넣으면 안된다.
회원정보 삭제
[회원정보 수정]
8) 테이블을 직접! 만들고 제어할 java 파일을 만든다. (PersonDAO)
person.sql의 정보를 가져다가 sqldeveloper에서 테이블을 만들어 준다.
[cmd]
마우스 오른쪽을 누르면 붙여넣기
다시 재생 ed
파일 끝내기 후 저장하면 다시 돌아옴
/ 후 엔터를 입력해준다.
시퀀스 역시 방법이 동일하다.
exit, exit 2번 해주면 된다.
commit이 필요한 것은 insert, upate, delete이다.
[메인메소드]
SqlSession
ss = factory.openSession();
getMapper(PersonMapper.class)
ss = factory.openSession();
PersonMapper mapper = ss.getMapper(PersonMapper.class);
mapper.insertPerson(p);
ss.commit();
이렇게 하면 아래의 정보, 데이터를 입력할 수 있다.
'개발자로 가는 길(국비지원과정) > 2. Oracle' 카테고리의 다른 글
[210530일] 오라클 데이터베이스 sql A분반 연습문제 (0) | 2021.05.30 |
---|---|
10주차 질문 (0) | 2021.05.29 |
[210527목] 오라클 자체조인 복습, 자바와 오라클 연동하기 (0) | 2021.05.27 |
[210526수] 오라클 서브쿼리 (0) | 2021.05.26 |
[210525화] 오라클 조인(등가/외부/셀프) (0) | 2021.05.25 |