목록전체 (303)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bBuzkz/btrLvJ5Sov2/AKVOZCMLCKTUiRB44bq910/img.png)
자바에서 문자열을 합치는 방법에는 크게 4가지가 있다. 1. + 연산자 2. String class의 concat() 메서드 3. String class의 append() 메서드 4. String class의 format() 메서드 간단한 코드를 작성해 각각의 연산속도를 비교해봤다. public class Main { public static void main(String[] args) { // 변수 long start, end, time = 0; // + start = System.nanoTime(); String str = ""; for (int i = 0; i < 10000; i++) { str += "ab"; } end = System.nanoTime(); time = end - start; Sy..
variable 변수 might not have been initialized 변수가 초기화되지 않았을 수 있습니다. 메서드 안에다 변수를 선언하고 + 연산을 하려고 했을 때 나온 오류이다. 나는 자바에서 변수를 선언하면 초기값을 자동으로 넣어주는 걸로 알고 있었다. 변수 타입에 따른 기본값 자료형 기본값 byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\n0000' boolean false 참조형 변수 ex) String, Object... null 이렇게... https://stackoverflow.com/questions/2448843/variable-might-not-have-been-initialized-error Variable might..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KV2H4/btrMt3B8Dbq/9HPIjx0ZMY1SKP4vrTJzGK/img.png)
ORM Object Relational Mappin의 준말로 객체 관계 매핑이다. 클래스(객체)와 데이터베이스 테이블(관계)을 자동으로 매핑 하는 기술이다. ORM을 이용하면 쿼리문 작성이 아닌 메서드로 데이터를 조작할 수 있다는 장점이 있다. JPA JPA는 자바의 ORM 기술 표준으로 채택된 인터페이스 모음이다. ORM보다 더 구체화된 개념이다. 인터페이스이기 때문에 아직 구현된 것이 아니고, 어떻게 동작해야하는지 메커니즘이 정리되어있다. JPA는 내부적으로 JDBC를 사용해서 개발자 대신 sql을 생성하고, 데이터베이스를 조작하고, 객체를 자동 매핑하는 역할을 한다. JPA 기반 구현체는 대표적으로 3가지가 있다. Hibernate, EclipseLink, DataNucleus 이 중 Hiberna..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cTRDdG/btrMmgvMVF4/PP369tcKmveiLi6xU2PI40/img.png)
코드 커버리지(code coverage)란 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표이다. 코드 커버리지를 하면 테스트 코드가 실행될 때 어디에 얼마나 많은 코드가 실행되었나 수치를 통해 알 수 있다. 코드 커버리지를 하는 이유는 수치를 통해 테스트를 안한(적게한) 부분을 찾아서 테스트를 더 하게 하여 추후에 생길 수 있는 에러 상황들을 막기 위함이다. 코드 커버리지는 * 화이트 박스 테스트를 통해 측정한다. * 화이트 박스 테스트 : 응용 프로그램의 내부 구조와 동작을 검사하는 테스트 방식 대표적인 코드 커버리지 도구로는 JaCoCo가 있다. JaCoCo는 Java Code Coverage의 약자로, Junit 테스트를 통해 애플리케이션의 코드가 얼마나 테스트 되었는지 확인..
전자출결시스템 프로젝트를 하고 제일 생각났던 것은 dto에 대해 고민했던 부분이다. 지금은 알고있는 내용이지만, 이 프로젝트를 할 때는 함수나 데이터베이스에서 값을 리턴할 때 dto 하나만 사용하는게 아니라 response 객체를 새로 만들어서 사용해도 관계없다는 사실을 몰랐다. response 클래스를 하나 더 만들면 몇 번 쓰고 말 것 같은데 쓸 때 없이 프로젝트 폴더에 쓸대없이 자리를 차지한다는 느낌이 강해서 테이블 dto 하나로 데이터베이스 접근부터 화면에 출력까지 처리하는 안일한 방법을 사용했다. 그래서 데이터베이스에서 join 해서 다른 테이블 값을 가져올 때처럼 변수 몇개가 더 필요한 경우, 기존에 사용하던 dto에다가 어쩔 수 없이 변수를 몇개 더 추가했었는데, 이 변수를 사용하지 않을 때..
이 프로젝트에서 인상깊었던 점은 데이터를 어떻게 처리할까에 대한 것이다. 나는 부트캠프를 듣기 전에 자바를 이용해서 만드는 웹 애플리케이션은 고착화된 구조가 있다고 생각하고 그 구조에 맞춰서 개발하기 급했다. 그런데 부트캠프 강사님께서 게시판 crud구현하는 과제를 내주실 때 crud는 기본이고, 데이터를 어떻게 처리할까에 대해서 생각을 많이 해봐라, 예를 들어서 enum을 사용한다던지...등등의 말을 하셨다. 나는 이말을 듣고 내가 평소에 책이나 강의에서 알려준대로 개발할 생각을 했지 스스로 생각해서 데이터를 구조화시킬 생각은 많이 해본 적이 없다는 사실을 깨달았다. 그리고 여러사람이 협업을 하게되면 메뉴얼을 따르는게 아니라 내가 생각해서 만들어놓은 부분들이 오히려 다른 사람이 알아보기 힘들어서 협업에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/B0OFE/btrLTU7qvmE/yNz6k3DDCKU9MKmWtlgOz0/img.png)
테스트 코드를 작성하는 이유 개발 과정에서 문제를 미리 발견할 수 있다. 리팩토링의 리스크가 줄어든다. 문서로서의 기능을 한다. 테스트 코드를 작성하는 가장 큰 목적이 첫 번째 이유이다. 테스트 코드를 작성하고 테스트하는 것은 코드에 잠재된 문제를 발견하는데 큰 도움이 된다. 일부러 에러가 발생하는 테스트 코드를 만들어서 예외처리가 잘 되는지 확인하거나, 비즈니스 로직에 맞춰 테스트 코드를 작성해서 결괏값이 참(200)으로 잘 나오는 지 확인하는 등의 방법으로 애플리케이션을 테스트한다. 애플리케이션을 개발하면 서비스 업데이트와 유지보수를 위해서 계속해서 코드를 수정하고 추가한다. 코드를 수정하는 것은 다른 애플리케이션 코드에 영향을 주는 위험한 작업이다. 그래서 테스트 코드를 작성하면 수시로 전체 애플리..
스프링 부트로 프로젝트를 하면서 db 민감정보를 버전관리에서 제외시키려고 application.properties를 gitignore 처리했었다. gitignore 처리했더니 mybatis 설정, view 설정 등 다른 사람이 봐도 되는 설정들을 볼 수가 없고, 무엇보다 나중에 git clone 해서 프로젝트를 내려받을 때 application.properties 파일을 따로 생성해야 하는 불편함이 생겼다. 그래서 db의 설정정보를 외부에다 위치시키고, 그 파일을 읽어오는 방식을 사용했다. 1. 먼저 application.porperties 안에 있는 db 설정정보를 없앤다. # MySQL DB 설정 #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Dri..