221019 java

늘숲·2022년 10월 19일
0

stack에 대하여
함수에서 함수를 호출하는 기능구현
푸쉬 팝 픽 이즈엠티
인터넷을 검색하면서 알아보는 방법
구글링을 하면 10분이면 될게 3시간을 검색해도 안나올 수 있다.
하지만 여태 몰랐던 것들을 추가로 알게 되고
머리가 아프지만 성장하게 된다.
추가로 영어실력도 성장한다.

stack의 메서드들을 구현해볼건데 인자로 배열을 받을거
gradle로 test도 같이 진행해볼거
그리고 List쓰면 스택장점이 사라지므로 list는 참고만 해둘 것.

gradle의 test파일에서는 여러가지 메서드를 내부에 test메서드로 작성해서 한번에 검사해볼 수 있다.
ctrl+enter로 쉽게 어노테이션과 함께 test코드를 생성할 수 있다.

알고리즘을 끝내고,
이제 gradle프로젝트를 만들어서,
EC2 인스턴스의 MySQL에 DB를 관리하는 코드를 만들었다.
UserDao라는 걸 만들었다.
DAO는 말 그대로 DB에 접근할때 사용하는 객체.
DB에 접속하여 데이터를 조회/수정을 하는 기능을 전담하도록 만든 객체다.

userdao에는 db와 연결할 수 있는 커넥션 기능이 필요하고,
데이터를 추가하는 기능, 데이터를 삭제하는 기능, 데이터를 조회하는 기능, 데이터를 업데이트하는 기능이 필요하다.
우선 DB를 연동할 수 있는 기능을 커넥션기능이라고 한다면,
커넥션 기능에는 db에 인증해서 접속할 수 있는 데이터를 담은 변수들이 담겨야 한다.
하지만 그런 데이터들은 민감하여 노출되면 안되기 때문에, 환경변수에 넣어서 환경변수를 커넥션 기능을 구현하는 메서드가 불러와서 접속할 수 있도록 해야한다.
그러기 위해서 JDBC라는 API를 사용한다.
자바를 위키검색하면 "JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다."고 적혀있다.
JDBC로 ADD, GET, DELETE, UPDATE를 통해서 SQL query statement를 통해서 연동을 하도록 한다.
각 메서드들을 구현하고 나면 관심사 분리를 한다.
관심사 분리란, 필요한 기능들을 최대한 작은 단위의 기능들로 쪼개서 느슨한 결합을 통해 분리해 놓는 것이다.
관심사 분리의 장점은, 기능의 변동이 필요할 때 기존의 코드를 최대한 수정하지 않고 재사용할 수 있다는 점이다.
우선은 커넥션 기능을 관심사 분리를 할 건데 방법이 두가지다.
하나는 추상클래스를 통한 상속이 있고, 두번째는 인터페이를 통한 구현이다.
상속을 통한 방법은 한번 상속하고 나면 더 이상의 상속이 불가하기 때문에 추가적인 기능에 대한 코드 수정이 불가피하므로 확장성에 문제가 있다.
이는 객체지향의 원칙인 SOLID의 개방폐쇄의 원칙에서 어긋나므로,
인터페이스를 통한 구현방식이 더 좋을 수 있다.
설계단계에서 인터페이스라는 느슨한 결합을 통해 설계하고, 그에 맞는 구현체를 만들어, 해당하는 구현체로 객체생성을 하면 해당하는 객체의 데이터를 용이하게 다룰 수 있다.
게다가 이렇게 하면 DB가 달라질 때마다, 커넥션 로직을 변경할 필요없이 해당하는 구현체만 바꿔서 적용하면 되는 장점이 있다.

profile
발전, 그리고 숲

0개의 댓글